         }
     }
     
-    func asyncDone() -> NonFailableTask<Void> {
-        return async { task in
-            await(self.t4)
-
-            NSOperationQueue.mainQueue().addOperationWithBlock {
-                self.doneLabel.text = "Done!"
-                self.doneLabel.hidden = false
-                
-                // we can finish the task on any thread, even the main thread
-                task.finish()
-            }
-        }
-    }
-   
-}+}

            await(self.t1)
            
            NSOperationQueue.mainQueue().addOperationWithBlock {
                // interface elements have to be updated on the main queue
                self.twoButton.enabled = true
            }
        }

            let _: Task<Void> = async(condition: DelayTaskCondition(timeInterval: 2)) { task in
                NSOperationQueue.mainQueue().addOperationWithBlock {
                    self.doneLabel.text = "And now for something\ncompletely different..."
                    task.finish() // we have always to tell when the task is finished
                }
            }

