   temp.pressure = 3024;
   temp.temp = 18.3;
   temp.volt = 10.8;
+  temp.curr = 2.12;
   temp.gyr.ax = 0;
   temp.gyr.ay = 0;
   temp.gyr.az = 0;
   temp.gyr.compass = 0;
-
   temp = mpuLoop(temp); // read orientation
 
   return  temp;
 }
 
-ACT communicate(SENS sens) {
-  ACT temp;
+ACT communicate(SENS sens, ACT temp) {
+
+  char inData[100]; // Allocate some space for the string
+  char inChar; // Where to store the character read
+  byte index = 0; // Index into array; where to store the character
   if (Serial.available() > 0) {
-    //Receive data
-    String incoming = Serial.readString();
-
-    // Send data back
-    String sending = createString(sens);
-    Serial.println(sending);
+    // Read in a whole string
+    while (Serial.available() > 0) {
+      inChar = Serial.read(); // Read a character
+      inData[index] = inChar; // Store it
+      index++; // Increment where to write next
+      inData[index] = '\0'; // Null terminate the string
+    }
+    // Update sensors
+    temp = stringToClass(inData);
   }
 
-  return  temp;
+  // Send actuator settings as string
+  Serial.println(classToString(sens));
+
+  return temp;
 }
 
-ACT communicateProto(SENS sens) {
+ACT stringToClass(char *inData) {
+  char *curr;
+  char *next;
+  char *att;
+  int value;
   ACT temp;
-  if (Serial.available() > 0) {
-    //Receive data
-    String incoming = Serial.readString();
+
+  next = strstr(inData, ",") + 1;
+
+  while (next - 1 != NULL) {
+    curr = next;
+    // Prepare next iteration
+    next = strstr(next, ",") + 1;
+    // Insert NULL character at delim
+    strcpy(next - 1, "\0");
+    // Update the corrosponding attribute
+    att = strtok(curr, ":");
+    value = atol(strtok(NULL, ":"));
+    if (strcmp(att, "led") == 0) {
+      temp.led = value;
+    } else if (strcmp(att, "pan") == 0) {
+      temp.pan = value;
+    } else if (strcmp(att, "tilt") == 0) {
+      temp.tilt = value;
+    } else if (strcmp(att, "lf") == 0) {
+      temp.mot.lf = value;
+    } else if (strcmp(att, "rf") == 0) {
+      temp.mot.rf = value;
+    } else if (strcmp(att, "lb") == 0) {
+      temp.mot.lb = value;
+    } else if (strcmp(att, "rb") == 0) {
+      temp.mot.rb = value;
+    }
   }
 
-  // Send data back
-  String sendString = createString(sens);
-  Serial.println(sendString);
-
-  return  temp;
+  return temp;
 }
 
-String createString(SENS sens) {
+String classToString(SENS sens) {
   String str = "SENSORS,";
   str += "press:";
   str += sens.pressure;

}

void moveActuator(ACT act) {

}

  str += sens.temp;
  str += ",volt:";
  str += sens.volt;
  str += ",curr:";
  str += sens.curr;
  str += ",roll:";
  str += sens.gyr.roll;
  str += ",yaw:";
