 
   if( !Serial.available() ) { return; }
   serInStr = Serial.readStringUntil('\n');
+  serInStr.trim();
   Serial.println(serInStr);
 
   char cmd = serInStr[0];  // first char is command
-  
+
   // argument parsing
-  
-  //char* str = serInStr;
+
   const char* str = serInStr.c_str();
-  while( *++str == ' ' );  // go past any intervening whitespace
-  if( strlen(str) >= 6 ) { // 6 chars in a hex color code
-      //str[6] = '\0';
-      num = strtol(str, NULL, 16); // parse color
-  } else { 
-      num = atoi(str);
-  }
-  
+  char str_work[40];
+  strcpy(str_work, str+1);
+  int32_t nums[8];
+  int n = str_to_nums( nums, str_work, 8);
+
+  num = nums[0]; // by default, assuming we got a hex string
+  if( n > 1 )  {  // we parsed more than a single number, so make it a single number
+      num = (nums[0] << 16 ) | (nums[1] << 8) | (nums[0] << 0);
+  }
+
   // command parsing
+
   if( cmd == '?' ) {
       help();
   }

  "'W'          write EEPROM scirpt line\n"
  "'b'          set brightness (v2)\n"
  "'.'          set which LED to act on (0=all) (v2)\n"
  "'s'/'S'      scan i2c bus for 1st BlinkM / search for devices\n"
  "'@<nn>'      select which BlinkM addr to talk on\n"
  "'!'          return BlinkM to factory settings\n"    
  "'?'          for this help msg\n\n"
                      ));
}

      Serial.println(F("Doing Factory Reset"));
      blinkm.doFactoryReset();
  }
  else if( cmd == '.' ) {
      Serial.print(F("Set LEDn: "));
      Serial.println(num, BIN);
      blinkm.setLEDn( num );
