         return result != nil
     }
 
-    public init() {}
+    public required init() {}
+
+    public required init(_ result: T) {
+        self.result = Try(result)
+    }
+
+    public required init(_ dependent: Future<T>) {
+        completeWith(future: dependent)
+    }
 
     // MARK: Complete
 

}

// MARK: - Future SequenceType -
extension SequenceType {

}



}

// MARK: - Tryable -
public protocol Tryable {
    associatedtype T

    var value: T? { get }
    var error: ErrorType? { get }

    init(_ value: T)
    init(_ error: ErrorType)

}

// MARK: - Try -

public enum Try<T>: Tryable {

    case Success(T)
    case Failure(ErrorType)

    public var value: T? {
        switch self {
        case .Success(let value):
            return value
        case .Failure:
            return nil
        }
    }

    public var error: ErrorType? {
        switch self {
        case .Success:
            return nil
        case .Failure(let error):
            return error
        }
    }

    public init(_ value: T) {
        self = .Success(value)
    }
