 
 void updateControl()
 {
-  uint8_t roter = 0; // setup space
-
-  noInterrupts(); // shutdown interrupts for this volatile operation
-  roter = _vol_rotaryControl; // copy the volatile control variable
-  interrupts(); // reenable interrupts immediately
-
-  uint8_t newState = rotaryControl2State(roter);
-
-  if (newState != controlState)
-  {
-    controlState = newState; // update the hilighted state
-
-    // do hiligting stuff //
-
-    Serial.print(F("new state => ")); Serial.println(newState);
-  }
-
-  if (controlDebounce > 0) //
-  {
-    controlDebounce--; // do dat sweet digi debounce
-  }
-  else
-  {
-    if (!digitalRead(PIN_ROT_CTRL_SW)) // if you press dis switch lock the sas control state
-    {
-      controlLocked = controlState; // update locked variable
-
-#ifdef DEBUG
-      Serial.println(F("this is the krpc call to change sas state"));
-#endif
-
-      controlDebounce = DELAY_CTRL; // reset delay
-    }
-  }
+  boolean newControlEnable = digitalRead(PIN_ROT_CTRL_EN);
+
+  // if it was on and now its off
+  if (controlEnable && !newControlEnable)
+  {
+    Serial.println(DISABLE); // send disable sequence
+  }
+  else if (controlEnable || newControlEnable)
+  {
+    uint8_t roter = 0; // setup space
+
+    noInterrupts(); // shutdown interrupts for this volatile operation
+    roter = _vol_rotaryControl; // copy the volatile control variable
+    interrupts(); // reenable interrupts immediately
+
+    uint8_t newState = rotaryControl2State(roter); // convert to sas number
+
+    if (newState != controlState)
+    {
+      controlState = newState; // update the hilighted state
+
+      // do hiligting stuff //
+      // here the currently hovered state will be a blinking
+      // led, there should be a timer started now that if not
+      // dealt with by pressing the dial button resets the
+      // controlState variable back to what is actually selected
+    }
+
+    if (controlDebounce > 0)
+    {
+      controlDebounce--; // do dat sweet digi debounce
+    }
+    else
+    {
+      // if you press dis switch lock the sas control state (active low)
+      if (!digitalRead(PIN_ROT_CTRL_SW))
+      {
+        controlLocked = controlState; // update locked variable
+
+        Serial.println(ENABLE); // send enable
+        Serial.println(controlLocked); // send new sas state
+
+        controlDebounce = DELAY_CTRL; // reset delay
+      }
+    }
+  }
+
+  controlEnable = newControlEnable; // finally save the new state for next time around
 
   Serial.println(DISABLE); // skip or end transmission
 }

  return (Wire.requestFrom(IO_ADDR_BASE | address, len) == len); // returns success fail
}

uint16_t i2cReadData() // get the data bytes and stuff them into a 16-bit unsigned value
{
  return (~(Wire.read() | (Wire.read() << 8)));
}


    for (col = PIN_HELM_MAT_COL; col < PIN_HELM_MAT_COLS; col++)
    {
      // get inverted result (matrix is active low) and shift it onto the matrix
      matrix = (matrix << 1) | !digitalRead(col); // wish there was <<=
    }

