   // Dump UID
     if((millis()-lastCardScan) > timeBetweenScans){
       lastCardScan = millis();
-      //cardSwiped();
+      // Some user feedback
+      BEEP(1);
       // Init card
       card_t card;
       // Copy card uid
       memcpy(&card.uid, &mfrc522.uid.uidByte, sizeof(card_uid_t));
       uint16_t addr = findCardOffset(card);
       uint16_t credit_addr = addr+4;
-
       // Flush incoming buffer
       while(Serial.available()){Serial.read();}
       // Fetch current credit count for the vending machine, in order to know whether to withdraw or deposit
-      Serial.print("C");
-      credits_in_machine = rfid_recieve();
+      credits_in_machine = rfid_recieve('C');
       //Serial.println(addr);
       // Attempt to recieve response from vending machine
       // If no response from has been recieved within a second, assume it is not powered/booted yet, stop processing
-      if(recieve_error == 1) return;
-      /*
-      if(Serial.readBytes(parseBuffer, sizeof(parseBuffer)) != 2){
-        //Serial.print("No response - aborting.");
-        return;
-      }
-      //Serial.println(parseBuffer[0],DEC);
-      //Serial.println(parseBuffer[1],DEC);
-      memcpy(&credits_in_machine,parseBuffer,sizeof(parseBuffer));*/
-      // Zero credits in machine - done now to avoid race-conditions of people buying when saving credits
-      Serial.print("ZZZZZ"); // Zero five times
-      //Serial.println(credits_in_machine);
+      if(recieve_error == 1){BEEP(4);return;}
 
       if(credits_in_machine == 0){ // Attempt withdrawal               ## WITHDRAW
         if(addr == 65535){ // New card!
           // ERR Beep + display "NO CREDITS"?
           //Serial.println("NO CREDITS - UNKNOWN CARD");
           Serial.print("N");
+          BEEP(1);
           // Halt PICC
           mfrc522.PICC_HaltA();
           // Return

            // ERR Beep + display "NO CREDITS"?
            //Serial.println("NO CREDITS - KNOWN CARD");
            Serial.print("N");
            // Halt PICC
            mfrc522.PICC_HaltA();
            // Return

          }
        }
      } else { // Attempt deposit                                      ## DEPOSIT
        // Zero credits in machine - done now to avoid race-conditions of people buying when saving credits
        Serial.print("ZZZZZ"); // Make sure the machine is zeroed five times
        if(addr == 65535){ // New card!
          // Attempt to find free spot
          //Serial.println("Unknown card - search for free spot");
          addr = findFreeCardSpot();
          if(addr == 65535){
            // Reset credits on vending machine
            rfid_transmit('S',credits_in_machine);
            // ERR Beep + display "ERR  OUT OF MEMORY" ?
            //Serial.println("ERR  OUT OF MEMORY");
            Serial.print("O");
            BEEP(4);
            // Halt PICC
            mfrc522.PICC_HaltA();
            // Return
