     self.connection = connection
   }
 
-  public func connect() throws {
+  func run() throws {
     try self.connection.run()
   }
 
-  public func disconnect() {
+  func stop() {
     self.connection.stop()
   }
 
-  @discardableResult
-  public func checkBlocked<T>(_ fn: () -> NvimApi.Response<T>) -> NvimApi.Response<T> {
-    guard let blocked = self.getMode().value?["blocking"]?.boolValue else {
-      return NvimApi.Response.failure(NvimApi.Error.blocked)
-    }
-
-    if blocked {
-      return NvimApi.Response.failure(NvimApi.Error.blocked)
-    }
-
-    return fn()
-  }
-
-  public func rpc(method: String,
-                  params: [MsgPackRpc.Value],
-                  expectsReturnValue: Bool) -> NvimApi.Response<NvimApi.Value> {
+  func rpc(method: String,
+           params: [MsgPackRpc.Value],
+           expectsReturnValue: Bool) -> Result<MsgPackRpc.Value, NvimApi.Error> {
 
     let msgid = locked(with: self.nextMsgidLock) { () -> UInt32 in
       let msgid = self.nextMsgid


  public var notificationCallback: NotificationCallback? {
    get {
      return self.connection.notificationCallback
    }


    }
  }

  var errorCallback: NvimApi.ErrorCallback? {
    get {
      return self.connection.errorCallback
    }
