@Override
  public void send(String command, Object params) throws Exception {
    checkInitiate();

    final IRemoteCallObject rco = new RemoteCallObject();
    synchronized (rco) {
      rco.setCallObjectId(getNextCallId());
      rco.setMetaDataObject(new RemoteCallObjectMetaData(command, RemoteCallObjectType.Message));
      rco.setDataObject(new RemoteCallObjectData(params));
      send(SerializeUtils.serializeToBytes(rco));
    }
  }