var Fiforce = module.exports = function () {
    var queue = [];

    var flush = function () {
        while (queue[0] && queue[0].completed) {
            queue.shift().call();
        }
    };

    return function (callback) {
        var callbackObject = {
            completed: false,
            arguments: [],
            callback: callback,
            call: function () {
                callback.apply(null, this.arguments);
            }
        };

        queue.push(callbackObject);

        return function () {
            callbackObject.completed = true;
            callbackObject.arguments = arguments;
            flush();
        };
    };
};

@@ -126,24 +126,19 @@
 eue%5B0%5D.c
-ompleted
+all
 ) %7B%0A    
@@ -252,115 +252,63 @@
  = %7B
-%0A            completed: false,%0A            arguments: %5B%5D,%0A            callback: callback,%0A            call:
+%7D;%0A%0A        queue.push(callbackObject);%0A%0A        return
  fun
@@ -334,38 +334,19 @@
     
- 
-   callback.apply(null, this.
+var args = 
 argu
@@ -350,17 +350,16 @@
 rguments
-)
 ;%0A      
@@ -363,78 +363,34 @@
     
-   
-  %7D%0A
      
-   %7D;%0A%0A        queue.push(callbackObject);%0A%0A        return
+callbackObject.call =
  fun
@@ -408,32 +408,36 @@
             
+    
 callback
 Object.compl
@@ -428,82 +428,43 @@
 back
-Object.completed = true;%0A            callbackObject.arguments = arguments;
+.apply(null, args);%0A            %7D;%0A
 %0A   

refactor toward simpler design