       break;
     case PIXY_CONFIG:
       if (argv[0] == PIXY_INIT) {
-        pixy.init();
-        pixyIsInitialized = true;
+        pixyPtr = new Pixy();
+        pixyPtr->init();
         // mark pins as Pixy so they are ignore in non Pixy data requests
         setPinModeCallback(PIN_PIXY_MOSI, PIXY);
         setPinModeCallback(PIN_PIXY_MISO, PIXY);

}

/* Pixy Support */
Pixy pixy;
boolean pixyIsInitialized = false;  // Flag to store if pixy.init() has been called.
boolean pixyIsReporting = false;  // Determines if Pixy data will be sent.
byte pixyMaxBlocks = 5;  // Sets the maximum number of Pixy blocks to report.


          pixyIsReporting = false;
        }
      } else if (argv[0] == PIXY_SET_SERVOS) {
        if (pixyPtr == NULL) {
          return;
        }
        int s0 = argv[1] + (argv[2] << 7);
        int s1 = argv[3] + (argv[4] << 7);
        pixyPtr->setServos(s0, s1);
      } else if (argv[0] == PIXY_SET_BRIGHTNESS) {
        if (pixyPtr == NULL) {
          return;
        }
        int brightness = argv[1] + (argv[2] << 7);
        pixyPtr->setBrightness(brightness);
      } else if (argv[0] == PIXY_SET_LED) {
        if (pixyPtr == NULL) {
          return;
        }
        int r = argv[1] + (argv[2] << 7);
        int g = argv[3] + (argv[4] << 7);
        int b = argv[5] + (argv[6] << 7);
        pixyPtr->setLED(r, g, b);
      }
      break;
    case TONE_DATA:
