diff --git a/quad/sw/modular_quad_pid/src/callbacks.c b/quad/sw/modular_quad_pid/src/callbacks.c
index 4cf2d6937574f70e1e49457f1ac920b797ee4635..c5dbafd02ed8d4616de321ff329341e2063f402b 100644
--- a/quad/sw/modular_quad_pid/src/callbacks.c
+++ b/quad/sw/modular_quad_pid/src/callbacks.c
@@ -75,208 +75,14 @@ int cb_beginupdate(modular_structs_t *structs) {
 
 /* Callbacks for configuration */
 
-int cb_setrollp(modular_structs_t *structs)
+int cb_setval(modular_structs_t *structs)
 {
-	structs->parameter_struct.roll_angle_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
 
-int cb_setrolli(modular_structs_t *structs)
-{
-	structs->parameter_struct.roll_angle_pid.Ki = uart_buff_data_get_float(0);
+	//structs->parameter_struct.roll_angle_pid.Kp = uart_buff_data_get_float(0);
 	return 0;
 }
 
-int cb_setrolld(modular_structs_t *structs)
-{
-	structs->parameter_struct.roll_angle_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setpitchp(modular_structs_t *structs)
-{
-	structs->parameter_struct.pitch_angle_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setpitchi(modular_structs_t *structs)
-{
-	structs->parameter_struct.pitch_angle_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setpitchd(modular_structs_t *structs)
-{
-	structs->parameter_struct.pitch_angle_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setyawp(modular_structs_t *structs)
-{
-	structs->parameter_struct.yaw_angle_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setyawi(modular_structs_t *structs)
-{
-	structs->parameter_struct.yaw_angle_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setyawd(modular_structs_t *structs)
-{
-	structs->parameter_struct.yaw_angle_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setrollratep(modular_structs_t *structs)
-{
-	structs->parameter_struct.roll_ang_vel_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setrollratei(modular_structs_t *structs)
-{
-	structs->parameter_struct.roll_ang_vel_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setrollrated(modular_structs_t *structs)
-{
-	structs->parameter_struct.roll_ang_vel_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setpitchratep(modular_structs_t *structs)
-{
-	structs->parameter_struct.pitch_ang_vel_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setpitchratei(modular_structs_t *structs)
-{
-	structs->parameter_struct.pitch_ang_vel_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setpitchrated(modular_structs_t *structs)
-{
-	structs->parameter_struct.pitch_ang_vel_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setyawratep(modular_structs_t *structs)
-{
-	structs->parameter_struct.yaw_ang_vel_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setyawratei(modular_structs_t *structs)
-{
-	structs->parameter_struct.yaw_ang_vel_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setyawrated(modular_structs_t *structs)
-{
-	structs->parameter_struct.yaw_ang_vel_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setlocalxp(modular_structs_t *structs)
-{
-	structs->parameter_struct.local_x_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setlocalxi(modular_structs_t *structs)
-{
-	structs->parameter_struct.local_x_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setlocalxd(modular_structs_t *structs)
-{
-	structs->parameter_struct.local_x_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setlocalyp(modular_structs_t *structs)
-{
-	structs->parameter_struct.local_y_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setlocalyi(modular_structs_t *structs)
-{
-	structs->parameter_struct.local_y_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setlocalyd(modular_structs_t *structs)
-{
-	structs->parameter_struct.local_y_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setaltp(modular_structs_t *structs)
-{
-	structs->parameter_struct.alt_pid.Kp = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setalti(modular_structs_t *structs)
-{
-	structs->parameter_struct.alt_pid.Ki = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setaltd(modular_structs_t *structs)
-{
-	structs->parameter_struct.alt_pid.Kd = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setrollsp(modular_structs_t *structs)
-{
-	structs->setpoint_struct.desiredQuadPosition.roll = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setpitchsp(modular_structs_t *structs)
-{
-	structs->setpoint_struct.desiredQuadPosition.pitch = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setyawsp(modular_structs_t *structs)
-{
-	structs->setpoint_struct.desiredQuadPosition.yaw = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setaltsp(modular_structs_t *structs)
-{
-	structs->setpoint_struct.desiredQuadPosition.alt_pos = uart_buff_data_get_float(0);
-	return 0;
-}
-
-int cb_setlonsp(modular_structs_t *structs)
-{
-    // TODO need to be able to take in a lat, lon position and convert it to quad x, y pos
-	return 0;
-}
-
-int cb_setlatsp(modular_structs_t *structs)
-{
-    // TODO need to be able to take in a lat, lon position and convert it to quad x, y pos
-	return 0;
-}
-
-
-/* callbacks for getters */
-
-int cb_getyawp(modular_structs_t* structs) {
+int cb_getval(modular_structs_t* structs) {
 	char buf[255];
 
 	// Message logging number of messages received and size of payload received
@@ -285,182 +91,3 @@ int cb_getyawp(modular_structs_t* structs) {
 	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[0].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
 	return 0;
 }
-
-int cb_getyawi(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.yaw_angle_pid.Ki);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[1].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getyawd(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.yaw_angle_pid.Kd);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[2].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getrollp(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.roll_angle_pid.Kp);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[3].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getrolli(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.roll_angle_pid.Ki);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[4].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getrolld(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.roll_angle_pid.Kd);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[5].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getpitchp(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.pitch_angle_pid.Kp);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[6].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getpitchi(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.pitch_angle_pid.Ki);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[7].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getpitchd(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.pitch_angle_pid.Kd);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[8].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-
-
-
-
-
-
-
-
-
-int cb_getyawratep(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.yaw_ang_vel_pid.Kp);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[9].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getyawratei(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.yaw_ang_vel_pid.Ki);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[10].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getyawrated(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.yaw_ang_vel_pid.Kd);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[11].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getrollratep(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.roll_ang_vel_pid.Kp);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[12].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getrollratei(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.roll_ang_vel_pid.Ki);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[13].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getrollrated(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.roll_ang_vel_pid.Kd);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[14].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getpitchratep(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.pitch_ang_vel_pid.Kp);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[15].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getpitchratei(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.pitch_ang_vel_pid.Ki);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[16].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
-
-int cb_getpitchrated(modular_structs_t* structs) {
-	char buf[255];
-
-	// Message logging number of messages received and size of payload received
-	int length = snprintf(buf, sizeof buf, "%f", structs->parameter_struct.pitch_ang_vel_pid.Kd);
-
-	send_data(MessageTypes[2].ID, MessageTypes[2].subtypes[17].ID, 0, buf, length >= sizeof(buf) ? 255 : length + 1);
-	return 0;
-}
diff --git a/quad/sw/modular_quad_pid/src/communication.c b/quad/sw/modular_quad_pid/src/communication.c
index 04a5705b1d5f6e0db4fefe8c7993ffe1cd8527cd..bba31571e0e5e6b26bf244f538d3719021d2b7d8 100644
--- a/quad/sw/modular_quad_pid/src/communication.c
+++ b/quad/sw/modular_quad_pid/src/communication.c
@@ -73,8 +73,7 @@ int process_packet(modular_structs_t *structs) {
 	metadata_t meta_data;
 	// parse metadata
 	meta_data.begin_char = uart_buff_get_u8(0);
-	meta_data.msg_type = uart_buff_get_u8(1);
-	meta_data.msg_subtype = uart_buff_get_u8(2);
+	meta_data.msg_type = uart_buff_get_u16(1);
 	meta_data.msg_id = uart_buff_get_u16(3);
 	meta_data.data_len = uart_buff_get_u16(5);
 	unsigned char packet_checksum = uart_buff_get_u8(7+meta_data.data_len);
@@ -93,7 +92,7 @@ int process_packet(modular_structs_t *structs) {
 	}
 
 	// Call appropriate function for packet
-	(* (MessageTypes[meta_data.msg_type].subtypes[meta_data.msg_subtype].functionPtr))(structs);
+	(* (MessageTypes[meta_data.msg_type].functionPtr))(structs);
 
 	uart_buff_consume_packet();
 
@@ -167,24 +166,23 @@ void uart_interrupt_handler(XUartPs *InstancePtr) {
 			IsrStatus);
 }
 
-int send_data(u16 type_id, u16 subtype_id, u16 msg_id, char* data, size_t size) {
+int send_data(u16 type_id, u16 msg_id, char* data, size_t size) {
 	//----------------------------------------------------------------------------------------------
 	//	   index||	   0	|	  1	   |	  2		 |	3 & 4 |		 5 & 6		 |	7+	|	end	   |
 	//---------------------------------------------------------------------------------------------|
-	// msg param|| beg char | msg type | msg subtype | msg id | data len (bytes) | data | checksum |
+	// msg param|| beg char |       msg type         | msg id | data len (bytes) | data | checksum |
 	//-------------------------------------------------------------------------------------------- |
-	//	   bytes||	   1	|	  1	   |	  1		 |	  2	  |		   2		 | var	|	 1	   |
+	//	   bytes||	   1	|	       2             |   2    |        2         | var	|	 1	   |
 	//----------------------------------------------------------------------------------------------
 
 	char formattedHeader[7];
 
 	// Begin Char:
 	formattedHeader[0] = BEGIN_CHAR;
-	// Msg type:
-	formattedHeader[1] = type_id;
-	// Msg subtype
-	formattedHeader[2] = subtype_id;
-	//Msg id 2 bytes
+	// Msg type 2 bytes:
+	formattedHeader[1] = type_id & 0x000000ff;
+	formattedHeader[2] = (type_id >> 8) & 0x000000ff;
+	// Msg id 2 bytes
 	formattedHeader[3] = msg_id & 0x000000ff;
 	formattedHeader[4] = (msg_id >> 8) & 0x000000ff;
 	// Data length and data - bytes 5&6 for len, 7+ for data
@@ -195,10 +193,6 @@ int send_data(u16 type_id, u16 subtype_id, u16 msg_id, char* data, size_t size)
 	unsigned char packet_checksum = 0;
 
 	int i;
-	// TODO: Look into uart0_sendBytes and see if it would be better to use
-	// Send header
-	//uart0_sendBytes(formattedHeader, 7);
-
 	for(i = 0; i < 7; i++) {
 		packet_checksum ^= formattedHeader[i];
 		uart0_sendByte(formattedHeader[i]);
diff --git a/quad/sw/modular_quad_pid/src/log_data.c b/quad/sw/modular_quad_pid/src/log_data.c
index f1e9e7a825a696486d3768708bc269841e745f4c..2b4bfe550e5facbd1dde865cc63cad1ed795cf2e 100644
--- a/quad/sw/modular_quad_pid/src/log_data.c
+++ b/quad/sw/modular_quad_pid/src/log_data.c
@@ -147,7 +147,7 @@ void printLogging(){
 	strcat(buf,header);
 	strcat(buf,units);
 
-	send_data(MessageTypes[5].ID, MessageTypes[5].subtypes[0].ID, 0, buf, strlen(buf) + 1);
+	send_data(MessageTypes[LOG_TYPE_ID].ID, MessageTypes[5].subtypes[0].ID, 0, buf, strlen(buf) + 1);
 	//uart0_sendBytes(buf, strlen(buf));
 	//usleep(100000);
 
diff --git a/quad/sw/modular_quad_pid/src/type_def.h b/quad/sw/modular_quad_pid/src/type_def.h
index a13879a48884a77414b50ed5dbb421566b32f1c9..034f6b770b35f5e6764712043c1348888fb62ba6 100644
--- a/quad/sw/modular_quad_pid/src/type_def.h
+++ b/quad/sw/modular_quad_pid/src/type_def.h
@@ -28,8 +28,7 @@ enum flight_mode{
 //----------------------------------------------------------------------------------------------
 typedef struct {
 	char begin_char;
-	char msg_type;
-	char msg_subtype;
+	uint16_t msg_type;
 	uint16_t msg_id;
 	uint16_t data_len;
 } metadata_t;
diff --git a/quad/sw/modular_quad_pid/src/uart.c b/quad/sw/modular_quad_pid/src/uart.c
index a31256e43d0afa9c1e30b5248ad558f04c0bbe8c..8328bed7b4f35388240e8c075b5e92cf4e7c4f70 100644
--- a/quad/sw/modular_quad_pid/src/uart.c
+++ b/quad/sw/modular_quad_pid/src/uart.c
@@ -298,8 +298,8 @@ void uart0_sendStr(char* str) {
 void uart0_sendMetaData(metadata_t md)
 {
 	uart0_sendByte(md.begin_char);
-	uart0_sendByte(md.msg_type);
-	uart0_sendByte(md.msg_subtype);
+	uart0_sendByte(md.msg_type & 0x00ff);
+	uart0_sendByte((md.msg_type >> 8) & 0x00ff);
 	uart0_sendByte(md.msg_id & 0x00ff);
 	uart0_sendByte((md.msg_id >> 8) & 0x00ff);
 	uart0_sendByte(md.data_len & 0x00ff);