 
 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();

    DEBUG("Pin #");
    DEBUGLN(slot);
    confpins[slot]->print();
}
void setup() {
#ifdef USE_SERIAL


bool pins_busy = false;

CircularBuffer<uint8_t, MAX> pins_to_update;
/* 
The LocoNet CV related stuff
*/
