   Serial.begin(115200);
 }
 
-bool collect_serial(void)
-{
-  while ( Serial.available() > 0 )
-  {
-    int8_t ch = Serial.read();
-    if ( ch == '\n' )
+SerialStatus collect_serial(void)
+{
+    SerialStatus status = IDLE;
+    int avail = Serial.available();
+/*
+    if (avail > 0) {
+        Serial.print("Avail: "); Serial.println(avail, DEC);
+    }
+*/
+    while (Serial.available() > 0)
     {
-      command[in_index] = 0; // terminate
-      if ( in_index > 0 )
-      {
-        in_index = 0;
-        return true;
-      }
-    }
-    else if (ch != '\r') // ignore CR
-    {
-      command[in_index] = ch;
-      if ( in_index < (sizeof(command)/sizeof(command[0])) - 2 ) {
-        in_index++;
-      }
-      //if( in_index >= 32 ) //sizeof(command) )
-      //  in_index = 0;
-    }
-  }
-  return false;
+        int8_t ch = Serial.read();
+        if ( ch == '\n' )
+        {
+            command[in_index] = 0; // terminate
+            if ( in_index > 0 )
+            {
+                in_index = 0;
+                return COMMAND_COMPLETE;
+            }
+        }
+        else if (ch != '\r') // ignore CR
+        {
+            command[in_index] = ch;
+            if ( in_index < (sizeof(command)/sizeof(command[0])) - 2 ) {
+                in_index++;
+            }
+            status = IN_PROGRESS;
+            //if( in_index >= 32 ) //sizeof(command) )
+            //  in_index = 0;
+        } else {
+            status = IN_PROGRESS;
+        }
+    }
+    // If we've received the start of a command, return that we're 'in progress'
+    if (status == IN_PROGRESS) Serial.println("In progress");
+    return status;
 }
 
 uint8_t getPercent(const char *buffer)

// first communication pin for neo pixel string
const unsigned int BASE_PIN = 2;

const unsigned int NUM_STRINGS = 1;
//#define NUM_STRINGS 8 // one for each resonator

const uint16_t LEDS_PER_STRAND = 240;
const bool RGBW_SUPPORT = true;
const unsigned int QUEUE_SIZE = 3;



enum Direction { NORTH = 0, NORTHEAST, EAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, NORTHWEST };
enum Ownership {  neutral = 0, enlightened, resistance };
enum SerialStatus { IDLE, IN_PROGRESS, COMMAND_COMPLETE };

// Static animation implementations singleton
Animations animations;
