         }
     }
 
+    /**
+        If there's no error, perform function with value and return wrapped result
+    */
     public func map<U>(transform: V -> U) -> Result<U> {
         switch self {
         case .Value(let value):

        }
    }

    public func flatMap<U>(transform: V -> Result<U>) -> Result<U> {
        switch self {
        case .Error(let error):

/**
    Wraps result of throwing code and allows to map embedded value
*/
public enum Result<V> {
    case Error(ErrorType)
    case Value(V)
    
    /**
        Init with unsafe code
    */
    public init(@noescape unsafe: () throws -> V) {
        do {
            self = .Value(try unsafe())
