 
 }
 
-int8_t read8() {
-  int8_t buffer = 0;
+uint8_t read8() {
+  uint8_t buffer = 0;
   read(1, (char*)&buffer);
   
   return buffer;
 }
 
-int16_t read16() {
-  int16_t buffer = 0;
+uint16_t read16() {
+  uint16_t buffer = 0;
   read(2, (char*)&buffer);
   
   return buffer;
 }
 
-int32_t read32() {
-  int32_t buffer = 0;
+uint32_t read32() {
+  uint32_t buffer = 0;
   read(4, (char*)&buffer);
   
   return buffer;
 }
 
-int64_t read64() {
-  int64_t buffer = 0;
+uint64_t read64() {
+  uint64_t buffer = 0;
   read(8, (char*)&buffer);
   
   return buffer;
 }
 
-void read(int16_t length, char* target) {
-  for(int16_t i=0; i<length; i++) {
+void read(uint16_t length, char* target) {
+  for(uint16_t i=0; i<length; i++) {
      *(target+i) = readBlocking();
       
    }
 }
 
-int8_t readBlocking() {
+uint8_t readBlocking() {
   while(Serial.available() <= 0);
   return Serial.read();
   
 }
 
-void writeToSerial(void* source, int16_t length) {
+void writeToSerial(void* source, uint16_t length) {
   char* sourceP = (char*) source;
 
-  for(int16_t i=0; i<length; i++) {
+  for(uint16_t i=0; i<length; i++) {
     Serial.write(*(sourceP + i));
     
   } 

  
  //Create Neopixels strip and init
  strip = &Adafruit_NeoPixel((uint16_t)60, (uint8_t) 6,(uint8_t)( NEO_GRB + NEO_KHZ800));
  strip.begin();
  
  //Apply red to green gradient
  for(int i=0; i<60; i++) {
    strip.setPixelColor(i, 255*(60-i)/60, 255*i/60, 0);

  }

  //show the gradient
  strip.show();
  
  //Tell host boot is complete
  sendDone();

  sendDone();

  //Write the ramsize
  uint16_t buf = RAMEND + 1;
  writeToSerial(&buf, 2);
  
  //Write the eeprom size
