Just one thing I noticed about your code. You are storing strings in ram. Please use the F() macro when using Serial.print("Constant string"); so so Serial.print(F("Constant string")); This is according to Serial.print() - Arduino Reference
You can pass flash-memory based strings to Serial.print() by wrapping them with F().
The reason this matters is because otherwise on startup the data will get copied from flash into ram. Since the contents of the string never changes there is no reason to do this. Instead it is much better use the data directly from flash.