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

}

extension ViewController {

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

    func asyncLoadImage() -> Task<UIImage> {
        // an observer is not needed to the task finish its job, but to have a network activity indicator at the top would be nice...
        let networkActivityObserver = NetworkActivityTaskObserver(application: UIApplication.sharedApplication())
