   // 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

          if(updateAndVerify(addr,card)){
            // Check if card has been changed
            // OK Beep + Set credits on vending machine
            Serial.print("S");
            char error = rfid_transmit(current_credits);
            if(error != 0){
              // Could not update machine credits - attempt to save credits to card again!
              card.credits = current_credits;
              updateAndVerify(addr,card);
            }
          } else {
            // ERR Beep + display "ERR  EEPROM BAD" ?
            //Serial.println("ERR  EEPROM BAD");
            Serial.print("B");
            // Halt PICC
            mfrc522.PICC_HaltA();
            // Return

        // Card found! (Known card OR found free spot for new card)
        // Attempt to add credits to card
        if(updateAndVerify(addr,card)){
          // OK Beep
          //BEEP(1);
        } else{
          // Reset credits on vending machine
          rfid_transmit('S',credits_in_machine);
          // ERR Beep + display "ERR  EEPROM BAD" ?
          //Serial.println("ERR  EEPROM BAD");
          Serial.print("B");
          BEEP(4);
          // TODO: Move card + mark sector as bad.
          // Attempt to move card?
          // Sector could be marked as dead by setting all bytes to 0xFE
        }
      }
    }
  // Halt PICC
  mfrc522.PICC_HaltA();
}
