     ///
     public init(weakified: Bool, initClosure: InitClosure)
     {
-        self._weakified = weakified
-        self._initClosure = { machine, progress, fulfill, _reject, configure in
+        super.init(weakified: weakified)
+        
+        let _initClosure: _InitClosure = { machine, progress, fulfill, _reject, configure in
             // NOTE: don't expose rejectHandler with ErrorInfo (isCancelled) for public init
             initClosure(progress: progress, fulfill: fulfill, reject: { (error: Error?) in _reject(ErrorInfo(error: error, isCancelled: false)) }, configure: configure)
             return
         }
         
-        super.init()
-        self.setup(weakified, self._initClosure!)
+        self.setup(weakified, _initClosure)
     }
     
     /// creates task without weakifying progress/fulfill/reject handlers

                }
            }
            
            switch self.machine.state {
                case .Fulfilled:
                    fulfill(self.value!)
                case .Rejected:
                    let errorInfo = self.errorInfo!
                    bind(errorInfo)
                default:
                    self.machine.addEventHandler(.Progress) { context in
                        if let (_, progressValue) = context.userInfo as? Task.ProgressTuple {
                            progress(progressValue)
                        }
                    }
                    self.machine.addEventHandler(.Fulfill) { context in
                        if let value = context.userInfo as? Value {
                            fulfill(value)
                        }
                    }
                    self.machine.addEventHandler(.Reject) { context in
                        if let errorInfo = context.userInfo as? ErrorInfo {
                            bind(errorInfo)
                        }
                    }
            }
            
        }

    /// NOTE: _initClosure has _RejectHandler as argument
    internal init(weakified: Bool = false, _initClosure: _InitClosure)
    {
        super.init(weakified: weakified)
        self.setup(weakified, _initClosure)
    }
    
