diff --git a/groundStation/src/backend/commands.c b/groundStation/src/backend/commands.c
index d1efa7e38e551784baca1124158b768b06b2ec90..a97197b8106334e13b2e652ab93c1228f868ce0b 100644
--- a/groundStation/src/backend/commands.c
+++ b/groundStation/src/backend/commands.c
@@ -44,29 +44,29 @@ struct MessageType MessageTypes[MAX_TYPE] =
 		// Message Type ID
 		0x01,
 		
-		// Calibration Subtypes
+		// Calibration Subtypes (PID coefficients)
 		{
-			// yaw setpoint subtype
+			// yaw p constant subtype
 			{
 				// ID
 				0x00,
 				// Command text
-				"setyaw",
+				"setyawp",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setyaw
+				NULL
 			},
-			// yaw p constant subtype
+			// yaw i constant subtype
 			{
 				// ID
 				0x01,
 				// Command text
-				"setyawp",
+				"setyawi",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setyawp
+				NULL
 			},
 			// yaw d constant subtype
 			{
@@ -77,29 +77,29 @@ struct MessageType MessageTypes[MAX_TYPE] =
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setyawd
+				NULL
 			},
-			// roll setpoint subtype
+			// roll p constant subtype
 			{
 				// ID
 				0x03,
 				// Command text
-				"setroll",
+				"setrollp",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setroll
+				NULL
 			},
-			// roll p constant subtype
+			// roll i constant subtype
 			{
 				// ID
 				0x04,
 				// Command text
-				"setrollp",
+				"setrolli",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setrollp
+				NULL
 			},
 			// roll d constant subtype
 			{
@@ -110,29 +110,29 @@ struct MessageType MessageTypes[MAX_TYPE] =
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setrolld
+				NULL
 			},
-			// pitch setpoint subtype
+			// pitch p constant subtype
 			{
 				// ID
 				0x06,
 				// Command text
-				"setpitch",
+				"setpitchp",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setpitch
+				NULL
 			},
-			// pitch p constant subtype
+			// pitch i constant subtype
 			{
 				// ID
 				0x07,
 				// Command text
-				"setpitchp",
+				"setpitchi",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setpitchp
+				NULL
 			},
 			// pitch d constant subtype
 			{
@@ -143,51 +143,205 @@ struct MessageType MessageTypes[MAX_TYPE] =
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setpitchd
+				NULL
 			},
-			// throttle setpoint subtype
+			// yawrate p constant subtype
 			{
 				// ID
 				0x09,
 				// Command text
-				"setthrottle",
+				"setyawratep",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setthrottle
+				NULL
 			},
-			// throttle p constant subtype
+			// yawrate i constant subtype
 			{
 				// ID
 				0x0A,
 				// Command text
-				"setthrottlep",
+				"setyawratei",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setthrottlep
+				NULL
 			},
-			// throttle i constant subtype
+			// yawrate d constant subtype
 			{
 				// ID
 				0x0B,
 				// Command text
-				"setthrottlei",
+				"setyawrated",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&setthrottlei
+				NULL
 			},
-			// throttle d constant subtype
+			// rollrate p constant subtype
 			{
 				// ID
 				0x0C,
 				// Command text
-				"setthrottled",
+				"setrollratep",
 				// Type of the command data
 				floatType,
 				// Function pointer
-				&getthrottled
+				NULL
+			},
+			// rollrate i constant subtype
+			{
+				// ID
+				0x0D,
+				// Command text
+				"setrollratei",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// rollrate d constant subtype
+			{
+				// ID
+				0x0E,
+				// Command text
+				"setrollrated",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// pitchrate p constant subtype
+			{
+				// ID
+				0x0F,
+				// Command text
+				"setpitchratep",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// pitchrate i constant subtype
+			{
+				// ID
+				0x10,
+				// Command text
+				"setpitchratei",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// pitchrate d constant subtype
+			{
+				// ID
+				0x11,
+				// Command text
+				"setpitchrated",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// height p constant subtype
+			{
+				// ID
+				0x12,
+				// Command text
+				"setheightp",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// height i constant subtype
+			{
+				// ID
+				0x13,
+				// Command text
+				"setheighti",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// height d constant subtype
+			{
+				// ID
+				0x14,
+				// Command text
+				"setheightd",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// lat p constant subtype
+			{
+				// ID
+				0x15,
+				// Command text
+				"setlatp",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// lat i constant subtype
+			{
+				// ID
+				0x16,
+				// Command text
+				"setlati",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// lat d constant subtype
+			{
+				// ID
+				0x17,
+				// Command text
+				"setlatd",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// long p constant subtype
+			{
+				// ID
+				0x18,
+				// Command text
+				"setlongp",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// long i constant subtype
+			{
+				// ID
+				0x19,
+				// Command text
+				"setlongi",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
+			},
+			// long d constant subtype
+			{
+				// ID
+				0x1A,
+				// Command text
+				"setlongd",
+				// Type of the command data
+				floatType,
+				// Function pointer
+				NULL
 			}
 		}
 	},
@@ -993,4 +1147,4 @@ int respthrottlei(unsigned char *packet, int dataLen, modular_structs_t *structs
 }
 int respthrottled(unsigned char *packet, int dataLen, modular_structs_t *structs){
 	return 0;
-}
\ No newline at end of file
+}
diff --git a/groundStation/src/backend/communication.c b/groundStation/src/backend/communication.c
index 86784506d05122229d04cad6cb5ed78eb9fcbb4c..2dacd03f90afb8ed35b99a56f34ca785225e3350 100644
--- a/groundStation/src/backend/communication.c
+++ b/groundStation/src/backend/communication.c
@@ -256,12 +256,16 @@ int processCommand(unsigned char *packet, modular_structs_t *structs) {
 	}
 	
 	if(metadata.data_len >= 0) {
-		// Call the appropriate subtype function
-		(* (MessageTypes[(unsigned char)metadata.msg_type].subtypes[(unsigned char)metadata.msg_subtype].functionPtr))(data, metadata.data_len, structs);
-		
+		/* Null check*/
+		if (MessageTypes[(unsigned char)metadata.msg_type].subtypes[
+				(unsigned char) metadata.msg_subtype].functionPtr) {
+			// Call the appropriate subtype function
+			(* (MessageTypes[(unsigned char)metadata.msg_type].subtypes[(unsigned char)metadata.msg_subtype].functionPtr))(data, metadata.data_len, structs);
+		}
+			
 		return 0;
 	}
 	
 	// Only gets here if there is an error
 	return -1;
-}
\ No newline at end of file
+}