   pulsePin(AUX_PIN, 20);
 
   // servo controller
-  pwm.begin();
-  pwm.setPWMFreq(50);  // servos run at ~50 Hz updates
+  ssc.begin(38400);
   
   // host communication //
   Serial.begin(38400);

  else
  if (cmd == 'p') power();
  else
  if (cmd == 's') servo();
  else
  if (cmd == 'b') battery();
  else
  if (cmd == 'v') Serial.println("v5");
  else
  if (cmd == 'r') _read();
  else


//=======================================

// ex: sp002000 - set servo 00 to the min position
// ex: sp159999 - set servo 15 to the max position
void servo_maestro()
{
  uint8_t channel;
  uint16_t value;
  cmd = buf[1];
  channel = bctoi(2, 2);
  value = bctoi16(4, 4);
  
  if (cmd == 'p') // servo position
  {
    if (channel < 18) maestro.setTarget(channel, value); else err();
  }
  if (cmd == 's') // servo speed
  {
    if (channel < 18) maestro.setSpeed(channel, value); else err();
  }
  if (cmd == 'a') // servo accel
  {
    if (channel < 18) maestro.setAcceleration(channel, value); else err();
  }
  else
  {
    nak();
  }
}

// ex: sp000500 - set servo 00 to the min position
// ex: sp152500 - set servo 15 to the max position
void servo_ssc32()
{
  uint8_t channel;
  uint16_t pos, time;
  cmd = buf[1];
  
  if (cmd == 'p') // servo pulse
  {
    channel = bctoi(2, 2);
    pos = bctoi16(4, 4);
    time = bctoi16(8, 4);
    if (channel > 31) err();
    else
    {
      ssc.print("#");
      ssc.print(channel);
      ssc.print("P");
      ssc.print(pos);
      if (time > 0) { ssc.print("T"); ssc.print(time); }
      ssc.println("");
    }
  }
  else
  {
