 
 void loop() {
 	pins_busy = false;
-  for (uint8_t i =0 ; i < pins_conf ; i++) {
-	 confpins[i]->update();
-  };
+  if (~pins_to_update.isEmpty()) {
+    if (~confpins[pins_to_update.first()]->update()) { // Update the first item, as long as update() returns true, otherwise...
+      DEBUG("Done updating ");
+      DEBUGLN(pins_to_update.first());
+      pins_to_update.shift(); // ..drop the first item
+      DEBUG(pins_to_update.size());
+      DEBUGLN(" active pins left in the queue");      
+    }
+  }
   
   /*** LOCONET ***/
   LnPacket = LocoNet.receive();


bool pins_busy = false;

/* 
The LocoNet CV related stuff
*/

  for (uint8_t i =0 ; i < MAX ; i++) {
    if (confpins[i]->_address == Address){
      confpins[i]->set(Direction, Output);
      pins_to_update.push(i);
      eeprom_write_word((uint16_t*)&(_CV.conf[i].servo.state), confpins[i]->get_state());
      DEBUG("Thrown switch: ");
      DEBUG(i);
