http://vokalinteractive.com/2012/01/05/functional-and-asynchronous-programming-in-ios/