 
 }
 
+// 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> {
+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)
     }

}

// MARK: - Future SequenceType -
extension SequenceType {

}


        return result != nil
    }

    public required init() {}

    public required init(_ result: T) {
        self.result = Try(result)
    }

    public required init(_ dependent: Future<T>) {
        completeWith(future: dependent)
    }

    // MARK: Complete

