diff --git a/Accelerometer.cpp b/Accelerometer.cpp
index 70d0fd3d7dcb3a1ef075bd2984257efb637221b7..c33aba1bcf907eafaabcc9acd63daa6259d72122 100644
--- a/Accelerometer.cpp
+++ b/Accelerometer.cpp
@@ -32,12 +32,6 @@ void Accelerometer :: Read_Accelerometer() {
     acc_val = analogRead(pin);
 }
 
-void Accelerometer :: Set_Packet() {
-    pkt.pin = pin;
-    pkt.val = acc_val;
+uint16_t Accelerometer :: Get_Accel() {
+    return acc_val;
 }
-
-int_packet Accelerometer :: Get_Packet() {
-   return pkt;
-}
-
diff --git a/Accelerometer.h b/Accelerometer.h
index 4394d4b931a5a8e1103dccc3d704cff1fed8e1d8..084cd4b923440a6fecd4c127b30b900f4263a52c 100644
--- a/Accelerometer.h
+++ b/Accelerometer.h
@@ -13,12 +13,10 @@ class Accelerometer {
         void Set_Pin(uint16_t _pin);
         uint16_t Get_Pin();
         void Read_Accelerometer();
-        void Set_Packet();
-        int_packet Get_Packet();
+        uint16_t Get_Accel();
     private:
         uint16_t pin;
         uint16_t acc_val;
-        int_packet pkt;
 };
 
 #endif
diff --git a/Configuration.h b/Configuration.h
index a5222a168251a46317ef6eaed5b3754a907a91e2..a6e10c8000f212f77e8439a4b3c0d36a0dfaeb8d 100644
--- a/Configuration.h
+++ b/Configuration.h
@@ -50,10 +50,13 @@
 
 // Packed attribute specifies each member of the structure or union is placed 
 // to minimize the memory required.
-// Size: 4 bytes probably padded to 16bytes
+// 1 byte is 16 bits
+// Size: 8 bytes + header bytes(2) + chksum byte + end bytes(2) 
 typedef struct {
-    uint16_t pin;         // What pin from Arduino
-    uint16_t val;         // What is the value read from this pin
+    uint16_t dip_val[3];         // dip switch val  
+    uint16_t acc_val[3];         // accelerometer val
+    uint16_t pot_val;            // potentiometer val
+    uint16_t vm_val;             // vibration motor out
 } __attribute__((__packed__)) int_packet; 
 
 #endif
diff --git a/DIPSwitch.cpp b/DIPSwitch.cpp
index 43a36e515318262a81d7eec6fc39064209e7bfd5..eaec6f7df3c7936e33293679cc6a30901d8ca700 100644
--- a/DIPSwitch.cpp
+++ b/DIPSwitch.cpp
@@ -7,8 +7,6 @@ DIPSwitch::~DIPSwitch() {}
 DIPSwitch::DIPSwitch(uint16_t _pin) {
     pin = _pin;
     pin_val = false;
-    pkt.pin = pin;
-    pkt.val = pin_val;
 }
 
 void DIPSwitch::Set_Pin(uint16_t _pin) {
@@ -27,15 +25,7 @@ void DIPSwitch::Read_DIPSwitch() {
     pin_val = !digitalRead(pin);
 }
 
-bool DIPSwitch::Get_Reading() {
+bool DIPSwitch::Get_Val() {
     return pin_val;
 }
 
-void DIPSwitch::Set_Packet() {
-    pkt.pin = pin;
-    pkt.val = pin_val;
-}
-
-int_packet DIPSwitch::Get_Packet() {
-    return pkt;
-}
diff --git a/DIPSwitch.h b/DIPSwitch.h
index 9a51c92bc6a3b59c09e965c9ca805ce632a77534..d6ff773590025db2ae7739389212b701a8b76b33 100644
--- a/DIPSwitch.h
+++ b/DIPSwitch.h
@@ -13,13 +13,10 @@ class DIPSwitch {
         uint16_t Get_Pin();
         void Set_Pin_Mode();
         void Read_DIPSwitch();
-        bool Get_Reading();
-        void Set_Packet();
-        int_packet Get_Packet();
+        bool Get_Val();
     private:
         uint16_t pin;
         bool pin_val;
-        int_packet pkt;
 };
 
 #endif
diff --git a/Potentiometer.cpp b/Potentiometer.cpp
index 14e5bd0710c6bbb9f3c1ca21bfccb77d23db3bf7..b8e894f628f3d7a1fb869f3a57615ee43368b2cd 100644
--- a/Potentiometer.cpp
+++ b/Potentiometer.cpp
@@ -3,15 +3,11 @@
 Potentiometer::Potentiometer() {
     pin = POT0_PIN;
     pot_val = 0;
-    pkt.pin = pin;
-    pkt.val = pot_val;
 }
 
 Potentiometer::Potentiometer(uint16_t _pin) {
     pin = _pin;
     pot_val = 0;
-    pkt.pin = pin;
-    pkt.val = pot_val;
 }
 
 Potentiometer::~Potentiometer() {}
@@ -32,15 +28,7 @@ void Potentiometer::Read_Potentiometer() {
     pot_val = analogRead(pin);
 }
 
-int Potentiometer::Get_Reading() {
+uint16_t Potentiometer::Get_Val() {
     return pot_val;
 }
 
-void Potentiometer::Set_Packet() {
-    pkt.pin = pin;
-    pkt.val = pot_val;
-}
-
-int_packet Potentiometer::Get_Packet() {
-    return pkt;
-}
diff --git a/Potentiometer.h b/Potentiometer.h
index 0375615d06ab5cbd27338c9d07177705b3b4f8e2..76454a6b30f04d35a7abdcbc07a46709c958e92d 100644
--- a/Potentiometer.h
+++ b/Potentiometer.h
@@ -13,13 +13,10 @@ class Potentiometer {
         void Set_Pin_Mode();
         uint16_t Get_Pin();
         void Read_Potentiometer();
-        int Get_Reading();
-        void Set_Packet();
-        int_packet Get_Packet();
+        uint16_t Get_Val();
     private:
         uint16_t pin;
-        int pot_val;
-        int_packet pkt;
+        uint16_t pot_val;
 
 };
 
diff --git a/SerialCommunication.cpp b/SerialCommunication.cpp
index 4e45c8b46b474265bead8239ab4f50ee17ff3703..21fca3a4460ddc958e9a883844fd7c77e12b2b81 100644
--- a/SerialCommunication.cpp
+++ b/SerialCommunication.cpp
@@ -44,8 +44,22 @@ void SerialCommunication::Set_Update_Request(bool _update_request) {
 }
 
 void SerialCommunication::Reset_Buffer() {
+    /*
+        Serial.print("prior :: ");
+        Serial.print("pkt size: ");
+        Serial.print(packet_size);
+        Serial.print("\tptr: ");
+        Serial.print((unsigned int) ptr);
+    */
     ptr -= packet_size;
     packet_size = 0;
+    /*
+        Serial.print("\tpost :: ");
+        Serial.print("pkt size: ");
+        Serial.print(packet_size);
+        Serial.print("\tptr: ");
+        Serial.println((unsigned int) ptr);
+    */
 }
 
 bool SerialCommunication::Get_Update_Request() {
@@ -85,17 +99,11 @@ int SerialCommunication::Set_Send_Pkt(int_packet packet_out) {
 int SerialCommunication::Send_Packet() {
     int bytesSent = 0;
     if (Serial.availableForWrite()) {
-        Serial.print((unsigned int) ptr);
-        Serial.print("\t");
-        for (int i = 0; i < packet_size; i++ ) {
-            Serial.print(send_pkt[i], HEX);
-            Serial.print(" ");
-        }
-        Serial.println();
+        bytesSent = Serial.write(send_pkt, packet_size);
         Serial.flush();
+        Reset_Buffer();
     }
     /* free(send_pkt); */
-    Reset_Buffer();
     /* Serial.println(); */
     return bytesSent;
 }
diff --git a/VibrationMotor.cpp b/VibrationMotor.cpp
index c1965fc618fedec51bc1b11f682f8527462cc98a..40568fb2af9d17e6e1ab07e72842839266cfa66d 100644
--- a/VibrationMotor.cpp
+++ b/VibrationMotor.cpp
@@ -26,22 +26,13 @@ uint16_t VibrationMotor::Get_Pin() {
 
 void VibrationMotor::Set_Amplitude(int _adc) {
     // read in between 0 and 1023, analogWrite values from 0 to 255
-    amplitude = _adc / 4;
+    amplitude = (uint16_t) _adc / 4;
 }
 
-int VibrationMotor::Get_Amplitude() {
+uint16_t VibrationMotor::Get_Amplitude() {
     return amplitude;
 }
 
 void VibrationMotor::Drive_Motor() {
     analogWrite(pin, amplitude);
 }
-
-void VibrationMotor::Set_Packet() {
-    pkt.pin = pin;
-    pkt.val = amplitude;
-}
-
-int_packet VibrationMotor::Get_Packet() {
-    return pkt;
-}
diff --git a/VibrationMotor.h b/VibrationMotor.h
index 77926668444b2fc0b13b70b48b3fd329c5d20b5a..3089460ba4918b810d9752dbbd0acbf61d9ae48b 100644
--- a/VibrationMotor.h
+++ b/VibrationMotor.h
@@ -13,14 +13,11 @@ class VibrationMotor {
         uint16_t Get_Pin();
         void Set_Pin_Mode();
         void Set_Amplitude(int _amplitude);
-        int Get_Amplitude();
+        uint16_t Get_Amplitude();
         void Drive_Motor();
-        void Set_Packet();
-        int_packet Get_Packet();
     private:
         uint16_t pin;
-        int amplitude;
-        int_packet pkt;
+        uint16_t amplitude;
 
 };
 
diff --git a/multisensoryarduino.ino b/multisensoryarduino.ino
index fff60c2377febed2db7a1d0ac49c9c7c1444d66a..1064100176a27015260100c382c1adbab3aa8c4c 100644
--- a/multisensoryarduino.ino
+++ b/multisensoryarduino.ino
@@ -14,8 +14,8 @@ using namespace std;
 bool update_request = false;
 int vibration_output = 0;
 int pot_val = 0;
-int_packet ds_pkt_out;
-int_packet acc_pkt_out;
+int bytes_sent = 0;
+int_packet pkt_out;
 
 VibrationMotor VibeMotor(LED_BUILTIN, 0);
 Potentiometer Pot(POT0_PIN);
@@ -44,31 +44,23 @@ void loop() {
         Accel[i].Read_Accelerometer();
     }
     Pot.Read_Potentiometer();
-    pot_val = Pot.Get_Reading();
+    pot_val = Pot.Get_Val();
 
     VibeMotor.Set_Amplitude(pot_val);
     VibeMotor.Drive_Motor();
     vibration_output = VibeMotor.Get_Amplitude();
 
     for (int j = 0 ; j < 3; j++) {
-        DSwitch[j].Set_Packet();
-        Accel[j].Set_Packet();
-        ds_pkt_out = DSwitch[j].Get_Packet();
-        acc_pkt_out = Accel[j].Get_Packet();
-        SerCom.Set_Send_Pkt(ds_pkt_out);
-        SerCom.Set_Send_Pkt(acc_pkt_out);
+        pkt_out.dip_val[j] = (uint16_t)DSwitch[j].Get_Val();
+        pkt_out.acc_val[j] = Accel[j].Get_Accel();
     }
-    Pot.Set_Packet();
-    VibeMotor.Set_Packet();
+    pkt_out.pot_val = Pot.Get_Val();
+    pkt_out.vm_val = VibeMotor.Get_Amplitude();
 
-    int_packet pot_pkt_out = Pot.Get_Packet();
-    int_packet vm_pkt_out = VibeMotor.Get_Packet();
-
-    SerCom.Set_Send_Pkt(pot_pkt_out);
-    SerCom.Set_Send_Pkt(vm_pkt_out);
+    SerCom.Set_Send_Pkt(pkt_out);
 
     if (update_request) {
-        SerCom.Send_Packet();
+        bytes_sent = SerCom.Send_Packet();
     }
 
     delay(DELAY);