Update for iOS 7 task changes and use dispatch_once and instancetype