 		case 'G': case 'g':
 			code = strtoul(&buf[1], &endptr, 10);
 			if (endptr == &buf[1]) {
-				sendMsg(F("ERROR: missing G command code"));
+				sendMsg(F("ERROR: missing G command code\n"));
 				return false;
 			}
 			if (code == 0) {

					break; }
				case 112:
					detachServos();
					sendMsg(F("OK"));
					break;
				case 113:
					attachServos();
					sendMsg(F("OK"));
					break;
					
				default:
					sendMsg(String(F("ERROR: invalid M address parameter: ")) + String(code, DEC) + String("\n"));
					return false;
			};
			break;
		default:
			sendMsg(String(F("ERROR: invalid command: ")) + String(buf[0]) + String("\n"));
			return false;
	};
}

// main loop
const uint8_t MAX_CMD_LEN = 128;
char buf[MAX_CMD_LEN + 1], c;
bool suspendStore = false;
uint8_t len = 0, cidx = 0;

void loop() {
	// read to newline
	// ignore any line that has over 32 characters
	if (Serial.available() > 0) {

						return false;
					}
				} else {
					sendMsg(F("ERROR: invalid G command wait flag (missing value)\n"));
					return false;
				}
			}
