         }
     }
     
-    public class func openBinaryFile(path: String, flags: CInt) -> Result<BinaryFile> {
+    public class func openBinaryFile(path: String, flags: CInt) -> OpenResult {
         let fileDescriptor = path.withCString { open($0, flags, 0o644) }
         if fileDescriptor < 0 { return .Failure(Error(code: errno)) }
         return .Success(BinaryFile(fileDescriptor: fileDescriptor))

        case End
    }
    
    public func seek(offset: FileOffset, from: SeekFrom = .Start) -> Result<FilePosition> {
        var position: FilePosition
        switch from {
        case .Start:

        }
    }
    
    public enum OpenResult {
        case Success(BinaryFile)
        case Failure(Error)
        
        public var error: Error? {
            switch self {
            case .Success:
                return nil
            case .Failure(let error):
                return error
                }
        }
        
        public var binaryFile: BinaryFile! {
            switch self {
            case .Success(let value):
                return value
            case .Failure:
                return nil
                }
        }
    }
    
    public class func openForReading(path: String) -> OpenResult {
        return openBinaryFile(path, flags: O_RDONLY)
    }
    
    public class func openForWriting(path: String, create: Bool = true) -> OpenResult {
        if create {
            return openBinaryFile(path, flags: O_WRONLY | O_CREAT)
        } else {
