     internal var machine: Machine!
     
     // store initial parameters for cloning task when using `try()`
-    internal let _weakified: Bool
     internal var _initClosure: _InitClosure?    // will be nil on fulfilled/rejected
     
     /// progress value

    ///
    public func success<Progress2, Value2>(successClosure: Value -> Task<Progress2, Value2, Error>) -> Task<Progress2, Value2, Error>
    {
        let newTask = Task<Progress2, Value2, Error> { machine, progress, fulfill, _reject, configure in
            
            let bind = { [weak machine] (value: Value) -> Void in
                let innerTask = successClosure(value)

                }
            }
            
            if let self_ = self {
                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)
                            }
                        }
                }
            }
            
        }
