You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by as...@apache.org on 2021/03/12 16:32:47 UTC

[ignite-3] branch ignite-14149 created (now 5534203)

This is an automated email from the ASF dual-hosted git repository.

ascherbakov pushed a change to branch ignite-14149
in repository https://gitbox.apache.org/repos/asf/ignite-3.git.


      at 5534203  IGNITE-14149 Cleanup code 9.

This branch includes the following new commits:

     new 5534203  IGNITE-14149 Cleanup code 9.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[ignite-3] 01/01: IGNITE-14149 Cleanup code 9.

Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ascherbakov pushed a commit to branch ignite-14149
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 55342037ee3414e3496e9bf1825bf292d4df2ebd
Author: Alexey Scherbakov <al...@gmail.com>
AuthorDate: Fri Mar 12 19:32:38 2021 +0300

    IGNITE-14149 Cleanup code 9.
---
 .../org/apache/ignite/raft/client/Command.java     |   4 +
 .../java/org/apache/ignite/raft/client/PeerId.java |   5 +-
 .../org/apache/ignite/raft/client/ReadCommand.java |   4 +
 .../apache/ignite/raft/client/WriteCommand.java    |   4 +
 .../raft/client/message/AddLearnersRequest.java    |  16 ++
 .../ignite/raft/client/message/AddPeerRequest.java |  15 ++
 .../raft/client/message/AddPeerResponse.java       |  18 ++
 .../raft/client/message/ChangePeersRequest.java    |  16 ++
 .../raft/client/message/ChangePeersResponse.java   |  18 ++
 .../raft/client/message/GetLeaderRequest.java      |  11 +
 .../raft/client/message/GetLeaderResponse.java     |  13 +
 .../raft/client/message/GetPeersRequest.java       |  13 +
 .../raft/client/message/GetPeersResponse.java      |  18 ++
 .../raft/client/message/LearnersOpResponse.java    |  18 ++
 .../raft/client/message/RaftClientMessages.java    | 261 ---------------------
 .../raft/client/message/RemoveLearnersRequest.java |  16 ++
 .../raft/client/message/RemovePeerRequest.java     |  15 ++
 .../raft/client/message/RemovePeerResponse.java    |  18 ++
 .../raft/client/message/ResetLearnersRequest.java  |  16 ++
 .../raft/client/message/ResetPeerRequest.java      |  16 ++
 .../raft/client/message/SnapshotRequest.java       |  11 +
 .../raft/client/message/TransferLeaderRequest.java |  15 ++
 .../ignite/raft/client/message/UserRequest.java    |  17 ++
 .../ignite/raft/client/message/UserResponse.java   |  11 +
 .../message/impl/AddLearnersRequestImpl.java       |   6 +-
 .../client/message/impl/AddPeerRequestImpl.java    |   6 +-
 .../client/message/impl/AddPeerResponseImpl.java   |   6 +-
 .../client/message/impl/ChangePeerRequestImpl.java |   6 +-
 .../message/impl/ChangePeersResponseImpl.java      |   6 +-
 .../client/message/impl/GetLeaderRequestImpl.java  |   6 +-
 .../client/message/impl/GetLeaderResponseImpl.java |   6 +-
 .../client/message/impl/GetPeersRequestImpl.java   |   6 +-
 .../client/message/impl/GetPeersResponseImpl.java  |   6 +-
 .../message/impl/LearnersOpResponseImpl.java       |   6 +-
 .../message/impl/RaftClientMessageFactory.java     |  58 +++--
 .../message/impl/RaftClientMessageFactoryImpl.java |  58 +++--
 .../message/impl/RemoveLearnersRequestImpl.java    |   6 +-
 .../client/message/impl/RemovePeerRequestImpl.java |   6 +-
 .../message/impl/RemovePeerResponseImpl.java       |   6 +-
 .../message/impl/ResetLearnersRequestImpl.java     |   6 +-
 .../client/message/impl/ResetPeerRequestImpl.java  |   6 +-
 .../client/message/impl/SnapshotRequestImpl.java   |   6 +-
 .../message/impl/TransferLeaderRequestImpl.java    |   6 +-
 .../raft/client/message/impl/UserRequestImpl.java  |   6 +-
 .../raft/client/message/impl/UserResponseImpl.java |   6 +-
 .../ignite/raft/client/rpc/RaftGroupRpcClient.java |  35 +--
 .../client/rpc/impl/RaftGroupRpcClientImpl.java    |  41 +++-
 .../service/RaftGroupClientRequestListener.java    |   6 +-
 .../service/RaftGroupClientRequestService.java     |   7 +-
 .../impl/RaftGroupClientRequestServiceImpl.java    |  20 +-
 .../org/apache/ignite/raft/client/MockUtils.java   |  26 +-
 .../raft/client/rpc/RaftGroupRpcClientTest.java    |   6 +-
 .../service/RaftGroupClientRequestServiceTest.java |   4 +-
 53 files changed, 526 insertions(+), 418 deletions(-)

diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/Command.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/Command.java
new file mode 100644
index 0000000..80de84d
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/Command.java
@@ -0,0 +1,4 @@
+package org.apache.ignite.raft.client;
+
+public interface Command {
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/PeerId.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/PeerId.java
index 6a268d8..4f5f2e3 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/PeerId.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/PeerId.java
@@ -17,15 +17,12 @@
 
 package org.apache.ignite.raft.client;
 
-import java.io.Serializable;
 import org.apache.ignite.network.NetworkMember;
 
 /**
  * Represents a participant in a replication group.
  */
-public final class PeerId implements Serializable {
-    private static final long serialVersionUID = 8083529734784884641L;
-
+public final class PeerId {
     /**
      * Cluster node for peer.
      */
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/ReadCommand.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/ReadCommand.java
new file mode 100644
index 0000000..d5d3a59
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/ReadCommand.java
@@ -0,0 +1,4 @@
+package org.apache.ignite.raft.client;
+
+public interface ReadCommand extends Command {
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/WriteCommand.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/WriteCommand.java
new file mode 100644
index 0000000..c15d38a
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/WriteCommand.java
@@ -0,0 +1,4 @@
+package org.apache.ignite.raft.client;
+
+public interface WriteCommand extends Command {
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddLearnersRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddLearnersRequest.java
new file mode 100644
index 0000000..07d97fa
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddLearnersRequest.java
@@ -0,0 +1,16 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface AddLearnersRequest {
+    List<PeerId> getLearnersList();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder addLearners(PeerId learnerId);
+
+        AddLearnersRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerRequest.java
new file mode 100644
index 0000000..2baec3d
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerRequest.java
@@ -0,0 +1,15 @@
+package org.apache.ignite.raft.client.message;
+
+import org.apache.ignite.raft.client.PeerId;
+
+public interface AddPeerRequest {
+    PeerId getPeerId();
+
+    interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder setPeerId(PeerId peerId);
+
+        AddPeerRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerResponse.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerResponse.java
new file mode 100644
index 0000000..590c08a
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerResponse.java
@@ -0,0 +1,18 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface AddPeerResponse {
+    List<PeerId> getOldPeersList();
+
+    List<PeerId> getNewPeersList();
+
+    public interface Builder {
+        Builder addOldPeers(PeerId oldPeersId);
+
+        Builder addNewPeers(PeerId newPeersId);
+
+        AddPeerResponse build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersRequest.java
new file mode 100644
index 0000000..0416167
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersRequest.java
@@ -0,0 +1,16 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface ChangePeersRequest {
+    List<PeerId> getNewPeersList();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder addNewPeers(PeerId peerId);
+
+        ChangePeersRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersResponse.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersResponse.java
new file mode 100644
index 0000000..2ef6ed2
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersResponse.java
@@ -0,0 +1,18 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface ChangePeersResponse {
+    List<PeerId> getOldPeersList();
+
+    List<PeerId> getNewPeersList();
+
+    public interface Builder {
+        Builder addOldPeers(PeerId oldPeerId);
+
+        Builder addNewPeers(PeerId newPeerId);
+
+        ChangePeersResponse build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderRequest.java
new file mode 100644
index 0000000..b00b3c6
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderRequest.java
@@ -0,0 +1,11 @@
+package org.apache.ignite.raft.client.message;
+
+public interface GetLeaderRequest {
+    String getGroupId();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        GetLeaderRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderResponse.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderResponse.java
new file mode 100644
index 0000000..6d7d90e
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderResponse.java
@@ -0,0 +1,13 @@
+package org.apache.ignite.raft.client.message;
+
+import org.apache.ignite.raft.client.PeerId;
+
+public interface GetLeaderResponse {
+    PeerId getLeaderId();
+
+    public interface Builder {
+        GetLeaderResponse build();
+
+        Builder setLeaderId(PeerId leaderId);
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersRequest.java
new file mode 100644
index 0000000..96bab5a
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersRequest.java
@@ -0,0 +1,13 @@
+package org.apache.ignite.raft.client.message;
+
+public interface GetPeersRequest {
+    boolean getOnlyAlive();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder setOnlyAlive(boolean onlyGetAlive);
+
+        GetPeersRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersResponse.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersResponse.java
new file mode 100644
index 0000000..edeaade
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersResponse.java
@@ -0,0 +1,18 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface GetPeersResponse {
+    List<PeerId> getPeersList();
+
+    List<PeerId> getLearnersList();
+
+    public interface Builder {
+        Builder addPeers(PeerId peerId);
+
+        Builder addLearners(PeerId learnerId);
+
+        GetPeersResponse build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/LearnersOpResponse.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/LearnersOpResponse.java
new file mode 100644
index 0000000..0b4ef69
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/LearnersOpResponse.java
@@ -0,0 +1,18 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface LearnersOpResponse {
+    List<PeerId> getOldLearnersList();
+
+    List<PeerId> getNewLearnersList();
+
+    public interface Builder {
+        Builder addOldLearners(PeerId oldLearnersId);
+
+        Builder addNewLearners(PeerId newLearnersId);
+
+        LearnersOpResponse build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessages.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessages.java
deleted file mode 100644
index db16acc..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessages.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.raft.client.message;
-
-import java.util.List;
-import org.apache.ignite.raft.client.PeerId;
-
-/**
- * Raft client messages.
- */
-public final class RaftClientMessages {
-    private RaftClientMessages() {
-    }
-
-    public interface AddPeerRequest {
-        PeerId getPeerId();
-
-        interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder setPeerId(PeerId peerId);
-
-            AddPeerRequest build();
-        }
-    }
-
-    public interface AddPeerResponse {
-        List<PeerId> getOldPeersList();
-
-        List<PeerId> getNewPeersList();
-
-        public interface Builder {
-            Builder addOldPeers(PeerId oldPeersId);
-
-            Builder addNewPeers(PeerId newPeersId);
-
-            AddPeerResponse build();
-        }
-    }
-
-    public interface RemovePeerRequest {
-        PeerId getPeerId();
-
-        interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder setPeerId(PeerId peerId);
-
-            RemovePeerRequest build();
-        }
-    }
-
-    public interface RemovePeerResponse {
-        List<PeerId> getOldPeersList();
-
-        List<PeerId> getNewPeersList();
-
-        public interface Builder {
-            Builder addOldPeers(PeerId oldPeerId);
-
-            Builder addNewPeers(PeerId newPeerId);
-
-            RemovePeerResponse build();
-        }
-    }
-
-    public interface ChangePeersRequest {
-        List<PeerId> getNewPeersList();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder addNewPeers(PeerId peerId);
-
-            ChangePeersRequest build();
-        }
-    }
-
-    public interface ChangePeersResponse {
-        List<PeerId> getOldPeersList();
-
-        List<PeerId> getNewPeersList();
-
-        public interface Builder {
-            Builder addOldPeers(PeerId oldPeerId);
-
-            Builder addNewPeers(PeerId newPeerId);
-
-            ChangePeersResponse build();
-        }
-    }
-
-    public interface SnapshotRequest {
-        String getGroupId();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            SnapshotRequest build();
-        }
-    }
-
-    public interface ResetPeerRequest {
-        List<PeerId> getNewPeersList();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder addNewPeers(PeerId peerId);
-
-            ResetPeerRequest build();
-        }
-    }
-
-    public interface TransferLeaderRequest {
-        String getGroupId();
-
-        PeerId getPeerId();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            TransferLeaderRequest build();
-        }
-    }
-
-    public interface GetLeaderRequest {
-        String getGroupId();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            GetLeaderRequest build();
-        }
-    }
-
-    public interface GetLeaderResponse {
-        PeerId getLeaderId();
-
-        public interface Builder {
-            GetLeaderResponse build();
-
-            Builder setLeaderId(PeerId leaderId);
-        }
-    }
-
-    public interface GetPeersRequest {
-        boolean getOnlyAlive();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder setOnlyAlive(boolean onlyGetAlive);
-
-            GetPeersRequest build();
-        }
-    }
-
-    public interface GetPeersResponse {
-        List<PeerId> getPeersList();
-
-        List<PeerId> getLearnersList();
-
-        public interface Builder {
-            Builder addPeers(PeerId peerId);
-
-            Builder addLearners(PeerId learnerId);
-
-            GetPeersResponse build();
-        }
-    }
-
-    public interface AddLearnersRequest {
-        List<PeerId> getLearnersList();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder addLearners(PeerId learnerId);
-
-            AddLearnersRequest build();
-        }
-    }
-
-    public interface RemoveLearnersRequest {
-        List<PeerId> getLearnersList();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder addLearners(PeerId leaderId);
-
-            RemoveLearnersRequest build();
-        }
-    }
-
-    public interface ResetLearnersRequest {
-        List<PeerId> getLearnersList();
-
-        public interface Builder {
-            Builder setGroupId(String groupId);
-
-            Builder addLearners(PeerId learnerId);
-
-            ResetLearnersRequest build();
-        }
-    }
-
-    public interface LearnersOpResponse {
-        List<PeerId> getOldLearnersList();
-
-        List<PeerId> getNewLearnersList();
-
-        public interface Builder {
-            Builder addOldLearners(PeerId oldLearnersId);
-
-            Builder addNewLearners(PeerId newLearnersId);
-
-            LearnersOpResponse build();
-        }
-    }
-
-    public interface UserRequest {
-        Object request();
-
-        String getGroupId();
-
-        public interface Builder {
-            Builder setRequest(Object request);
-
-            Builder setGroupId(String groupId);
-
-            UserRequest build();
-        }
-    }
-
-    public interface UserResponse<T> {
-        T response();
-
-        public interface Builder<T> {
-            Builder setResponse(T response);
-
-            UserResponse<T> build();
-        }
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemoveLearnersRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemoveLearnersRequest.java
new file mode 100644
index 0000000..ec99855
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemoveLearnersRequest.java
@@ -0,0 +1,16 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface RemoveLearnersRequest {
+    List<PeerId> getLearnersList();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder addLearners(PeerId leaderId);
+
+        RemoveLearnersRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerRequest.java
new file mode 100644
index 0000000..b450464
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerRequest.java
@@ -0,0 +1,15 @@
+package org.apache.ignite.raft.client.message;
+
+import org.apache.ignite.raft.client.PeerId;
+
+public interface RemovePeerRequest {
+    PeerId getPeerId();
+
+    interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder setPeerId(PeerId peerId);
+
+        RemovePeerRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerResponse.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerResponse.java
new file mode 100644
index 0000000..5751b57
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerResponse.java
@@ -0,0 +1,18 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface RemovePeerResponse {
+    List<PeerId> getOldPeersList();
+
+    List<PeerId> getNewPeersList();
+
+    public interface Builder {
+        Builder addOldPeers(PeerId oldPeerId);
+
+        Builder addNewPeers(PeerId newPeerId);
+
+        RemovePeerResponse build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetLearnersRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetLearnersRequest.java
new file mode 100644
index 0000000..56a117a
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetLearnersRequest.java
@@ -0,0 +1,16 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface ResetLearnersRequest {
+    List<PeerId> getLearnersList();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder addLearners(PeerId learnerId);
+
+        ResetLearnersRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetPeerRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetPeerRequest.java
new file mode 100644
index 0000000..9f30def
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetPeerRequest.java
@@ -0,0 +1,16 @@
+package org.apache.ignite.raft.client.message;
+
+import java.util.List;
+import org.apache.ignite.raft.client.PeerId;
+
+public interface ResetPeerRequest {
+    List<PeerId> getNewPeersList();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        Builder addNewPeers(PeerId peerId);
+
+        ResetPeerRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/SnapshotRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/SnapshotRequest.java
new file mode 100644
index 0000000..9aefb5f
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/SnapshotRequest.java
@@ -0,0 +1,11 @@
+package org.apache.ignite.raft.client.message;
+
+public interface SnapshotRequest {
+    String getGroupId();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        SnapshotRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/TransferLeaderRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/TransferLeaderRequest.java
new file mode 100644
index 0000000..46e17eb
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/TransferLeaderRequest.java
@@ -0,0 +1,15 @@
+package org.apache.ignite.raft.client.message;
+
+import org.apache.ignite.raft.client.PeerId;
+
+public interface TransferLeaderRequest {
+    String getGroupId();
+
+    PeerId getPeerId();
+
+    public interface Builder {
+        Builder setGroupId(String groupId);
+
+        TransferLeaderRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserRequest.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserRequest.java
new file mode 100644
index 0000000..c560abf
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserRequest.java
@@ -0,0 +1,17 @@
+package org.apache.ignite.raft.client.message;
+
+import org.apache.ignite.raft.client.Command;
+
+public interface UserRequest {
+    Command request();
+
+    String getGroupId();
+
+    public interface Builder {
+        Builder setRequest(Command request);
+
+        Builder setGroupId(String groupId);
+
+        UserRequest build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserResponse.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserResponse.java
new file mode 100644
index 0000000..18e9f95
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserResponse.java
@@ -0,0 +1,11 @@
+package org.apache.ignite.raft.client.message;
+
+public interface UserResponse<T> {
+    T response();
+
+    public interface Builder<T> {
+        Builder setResponse(T response);
+
+        UserResponse<T> build();
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddLearnersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddLearnersRequestImpl.java
index bab852c..fbaddaa 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddLearnersRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddLearnersRequestImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.AddLearnersRequest;
 
-public class AddLearnersRequestImpl implements RaftClientMessages.AddLearnersRequest, RaftClientMessages.AddLearnersRequest.Builder {
+public class AddLearnersRequestImpl implements AddLearnersRequest, AddLearnersRequest.Builder {
     private String groupId;
 
     private List<PeerId> learnersList = new ArrayList<>();
@@ -47,7 +47,7 @@ public class AddLearnersRequestImpl implements RaftClientMessages.AddLearnersReq
         return this;
     }
 
-    @Override public RaftClientMessages.AddLearnersRequest build() {
+    @Override public AddLearnersRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerRequestImpl.java
index 34cbc0c..7b581a8 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerRequestImpl.java
@@ -18,9 +18,9 @@
 package org.apache.ignite.raft.client.message.impl;
 
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.AddPeerRequest;
 
-class AddPeerRequestImpl implements RaftClientMessages.AddPeerRequest, RaftClientMessages.AddPeerRequest.Builder {
+class AddPeerRequestImpl implements AddPeerRequest, AddPeerRequest.Builder {
     private String groupId;
 
     private PeerId peerId;
@@ -45,7 +45,7 @@ class AddPeerRequestImpl implements RaftClientMessages.AddPeerRequest, RaftClien
         return this;
     }
 
-    @Override public RaftClientMessages.AddPeerRequest build() {
+    @Override public AddPeerRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerResponseImpl.java
index 7394434..653285f 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerResponseImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerResponseImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.AddPeerResponse;
 
-class AddPeerResponseImpl implements RaftClientMessages.AddPeerResponse, RaftClientMessages.AddPeerResponse.Builder {
+class AddPeerResponseImpl implements AddPeerResponse, AddPeerResponse.Builder {
     private List<PeerId> oldPeersList = new ArrayList<>();
 
     private List<PeerId> newPeersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class AddPeerResponseImpl implements RaftClientMessages.AddPeerResponse, RaftCli
         return this;
     }
 
-    @Override public RaftClientMessages.AddPeerResponse build() {
+    @Override public AddPeerResponse build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeerRequestImpl.java
index 3b00d81..cac06be 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeerRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeerRequestImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.ChangePeersRequest;
 
-class ChangePeerRequestImpl implements RaftClientMessages.ChangePeersRequest, RaftClientMessages.ChangePeersRequest.Builder {
+class ChangePeerRequestImpl implements ChangePeersRequest, ChangePeersRequest.Builder {
     private String groupId;
 
     private List<PeerId> newPeersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class ChangePeerRequestImpl implements RaftClientMessages.ChangePeersRequest, Ra
         return this;
     }
 
-    @Override public RaftClientMessages.ChangePeersRequest build() {
+    @Override public ChangePeersRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeersResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeersResponseImpl.java
index 9595593..55395c6 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeersResponseImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeersResponseImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.ChangePeersResponse;
 
-class ChangePeersResponseImpl implements RaftClientMessages.ChangePeersResponse, RaftClientMessages.ChangePeersResponse.Builder {
+class ChangePeersResponseImpl implements ChangePeersResponse, ChangePeersResponse.Builder {
     private List<PeerId> oldPeersList = new ArrayList<>();
 
     private List<PeerId> newPeersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class ChangePeersResponseImpl implements RaftClientMessages.ChangePeersResponse,
         return this;
     }
 
-    @Override public RaftClientMessages.ChangePeersResponse build() {
+    @Override public ChangePeersResponse build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderRequestImpl.java
index 6a2ae69..8266b1e 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderRequestImpl.java
@@ -17,9 +17,9 @@
 
 package org.apache.ignite.raft.client.message.impl;
 
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.GetLeaderRequest;
 
-public class GetLeaderRequestImpl implements RaftClientMessages.GetLeaderRequest, RaftClientMessages.GetLeaderRequest.Builder {
+public class GetLeaderRequestImpl implements GetLeaderRequest, GetLeaderRequest.Builder {
     private String groupId;
 
     @Override public String getGroupId() {
@@ -32,7 +32,7 @@ public class GetLeaderRequestImpl implements RaftClientMessages.GetLeaderRequest
         return this;
     }
 
-    @Override public RaftClientMessages.GetLeaderRequest build() {
+    @Override public GetLeaderRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderResponseImpl.java
index 0bce43c..d98ecbf 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderResponseImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderResponseImpl.java
@@ -18,16 +18,16 @@
 package org.apache.ignite.raft.client.message.impl;
 
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.GetLeaderResponse;
 
-public class GetLeaderResponseImpl implements RaftClientMessages.GetLeaderResponse, RaftClientMessages.GetLeaderResponse.Builder {
+public class GetLeaderResponseImpl implements GetLeaderResponse, GetLeaderResponse.Builder {
     private PeerId leaderId;
 
     @Override public PeerId getLeaderId() {
         return leaderId;
     }
 
-    @Override public RaftClientMessages.GetLeaderResponse build() {
+    @Override public GetLeaderResponse build() {
         return this;
     }
 
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersRequestImpl.java
index 0d6842a..b81a861 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersRequestImpl.java
@@ -17,9 +17,9 @@
 
 package org.apache.ignite.raft.client.message.impl;
 
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.GetPeersRequest;
 
-class GetPeersRequestImpl implements RaftClientMessages.GetPeersRequest, RaftClientMessages.GetPeersRequest.Builder {
+class GetPeersRequestImpl implements GetPeersRequest, GetPeersRequest.Builder {
     private String groupId;
 
     private boolean onlyAlive;
@@ -44,7 +44,7 @@ class GetPeersRequestImpl implements RaftClientMessages.GetPeersRequest, RaftCli
         return this;
     }
 
-    @Override public RaftClientMessages.GetPeersRequest build() {
+    @Override public GetPeersRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersResponseImpl.java
index 53f16af..dc05f04 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersResponseImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersResponseImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.GetPeersResponse;
 
-class GetPeersResponseImpl implements RaftClientMessages.GetPeersResponse, RaftClientMessages.GetPeersResponse.Builder {
+class GetPeersResponseImpl implements GetPeersResponse, GetPeersResponse.Builder {
     private List<PeerId> peersList = new ArrayList<>();
 
     private List<PeerId> learnersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class GetPeersResponseImpl implements RaftClientMessages.GetPeersResponse, RaftC
         return this;
     }
 
-    @Override public RaftClientMessages.GetPeersResponse build() {
+    @Override public GetPeersResponse build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/LearnersOpResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/LearnersOpResponseImpl.java
index 85530e3..2af1c9c 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/LearnersOpResponseImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/LearnersOpResponseImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.LearnersOpResponse;
 
-class LearnersOpResponseImpl implements RaftClientMessages.LearnersOpResponse, RaftClientMessages.LearnersOpResponse.Builder {
+class LearnersOpResponseImpl implements LearnersOpResponse, LearnersOpResponse.Builder {
     private List<PeerId> oldLearnersList = new ArrayList<>();
 
     private List<PeerId> newLearnersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class LearnersOpResponseImpl implements RaftClientMessages.LearnersOpResponse, R
         return this;
     }
 
-    @Override public RaftClientMessages.LearnersOpResponse build() {
+    @Override public LearnersOpResponse build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactory.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactory.java
index 22dd9ce..7dd3a74 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactory.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactory.java
@@ -17,45 +17,63 @@
 
 package org.apache.ignite.raft.client.message.impl;
 
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.AddLearnersRequest;
+import org.apache.ignite.raft.client.message.AddPeerRequest;
+import org.apache.ignite.raft.client.message.AddPeerResponse;
+import org.apache.ignite.raft.client.message.ChangePeersRequest;
+import org.apache.ignite.raft.client.message.ChangePeersResponse;
+import org.apache.ignite.raft.client.message.GetLeaderRequest;
+import org.apache.ignite.raft.client.message.GetLeaderResponse;
+import org.apache.ignite.raft.client.message.GetPeersRequest;
+import org.apache.ignite.raft.client.message.GetPeersResponse;
+import org.apache.ignite.raft.client.message.LearnersOpResponse;
+import org.apache.ignite.raft.client.message.RemoveLearnersRequest;
+import org.apache.ignite.raft.client.message.RemovePeerRequest;
+import org.apache.ignite.raft.client.message.RemovePeerResponse;
+import org.apache.ignite.raft.client.message.ResetLearnersRequest;
+import org.apache.ignite.raft.client.message.ResetPeerRequest;
+import org.apache.ignite.raft.client.message.SnapshotRequest;
+import org.apache.ignite.raft.client.message.TransferLeaderRequest;
+import org.apache.ignite.raft.client.message.UserRequest;
+import org.apache.ignite.raft.client.message.UserResponse;
 
 /** */
 public interface RaftClientMessageFactory {
-    RaftClientMessages.AddPeerRequest.Builder createAddPeerRequest();
+    AddPeerRequest.Builder createAddPeerRequest();
 
-    RaftClientMessages.AddPeerResponse.Builder createAddPeerResponse();
+    AddPeerResponse.Builder createAddPeerResponse();
 
-    RaftClientMessages.RemovePeerRequest.Builder createRemovePeerRequest();
+    RemovePeerRequest.Builder createRemovePeerRequest();
 
-    RaftClientMessages.RemovePeerResponse.Builder createRemovePeerResponse();
+    RemovePeerResponse.Builder createRemovePeerResponse();
 
-    RaftClientMessages.ChangePeersRequest.Builder createChangePeerRequest();
+    ChangePeersRequest.Builder createChangePeerRequest();
 
-    RaftClientMessages.ChangePeersResponse.Builder createChangePeerResponse();
+    ChangePeersResponse.Builder createChangePeerResponse();
 
-    RaftClientMessages.SnapshotRequest.Builder createSnapshotRequest();
+    SnapshotRequest.Builder createSnapshotRequest();
 
-    RaftClientMessages.ResetPeerRequest.Builder createResetPeerRequest();
+    ResetPeerRequest.Builder createResetPeerRequest();
 
-    RaftClientMessages.TransferLeaderRequest.Builder createTransferLeaderRequest();
+    TransferLeaderRequest.Builder createTransferLeaderRequest();
 
-    RaftClientMessages.GetLeaderRequest.Builder createGetLeaderRequest();
+    GetLeaderRequest.Builder createGetLeaderRequest();
 
-    RaftClientMessages.GetLeaderResponse.Builder createGetLeaderResponse();
+    GetLeaderResponse.Builder createGetLeaderResponse();
 
-    RaftClientMessages.GetPeersRequest.Builder createGetPeersRequest();
+    GetPeersRequest.Builder createGetPeersRequest();
 
-    RaftClientMessages.GetPeersResponse.Builder createGetPeersResponse();
+    GetPeersResponse.Builder createGetPeersResponse();
 
-    RaftClientMessages.AddLearnersRequest.Builder createAddLearnersRequest();
+    AddLearnersRequest.Builder createAddLearnersRequest();
 
-    RaftClientMessages.RemoveLearnersRequest.Builder createRemoveLearnersRequest();
+    RemoveLearnersRequest.Builder createRemoveLearnersRequest();
 
-    RaftClientMessages.ResetLearnersRequest.Builder createResetLearnersRequest();
+    ResetLearnersRequest.Builder createResetLearnersRequest();
 
-    RaftClientMessages.LearnersOpResponse.Builder createLearnersOpResponse();
+    LearnersOpResponse.Builder createLearnersOpResponse();
 
-    RaftClientMessages.UserRequest.Builder createUserRequest();
+    UserRequest.Builder createUserRequest();
 
-    RaftClientMessages.UserResponse.Builder createUserResponse();
+    UserResponse.Builder createUserResponse();
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactoryImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactoryImpl.java
index 77b825b..85c60d1 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactoryImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactoryImpl.java
@@ -17,7 +17,25 @@
 
 package org.apache.ignite.raft.client.message.impl;
 
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.AddLearnersRequest;
+import org.apache.ignite.raft.client.message.AddPeerRequest;
+import org.apache.ignite.raft.client.message.AddPeerResponse;
+import org.apache.ignite.raft.client.message.ChangePeersRequest;
+import org.apache.ignite.raft.client.message.ChangePeersResponse;
+import org.apache.ignite.raft.client.message.GetLeaderRequest;
+import org.apache.ignite.raft.client.message.GetLeaderResponse;
+import org.apache.ignite.raft.client.message.GetPeersRequest;
+import org.apache.ignite.raft.client.message.GetPeersResponse;
+import org.apache.ignite.raft.client.message.LearnersOpResponse;
+import org.apache.ignite.raft.client.message.RemoveLearnersRequest;
+import org.apache.ignite.raft.client.message.RemovePeerRequest;
+import org.apache.ignite.raft.client.message.RemovePeerResponse;
+import org.apache.ignite.raft.client.message.ResetLearnersRequest;
+import org.apache.ignite.raft.client.message.ResetPeerRequest;
+import org.apache.ignite.raft.client.message.SnapshotRequest;
+import org.apache.ignite.raft.client.message.TransferLeaderRequest;
+import org.apache.ignite.raft.client.message.UserRequest;
+import org.apache.ignite.raft.client.message.UserResponse;
 
 /**
  * Raft client message factory.
@@ -26,79 +44,79 @@ public class RaftClientMessageFactoryImpl implements RaftClientMessageFactory {
     /** */
     public static RaftClientMessageFactoryImpl MESSAGE_FACTORY = new RaftClientMessageFactoryImpl();
 
-    @Override public RaftClientMessages.AddPeerRequest.Builder createAddPeerRequest() {
+    @Override public AddPeerRequest.Builder createAddPeerRequest() {
         return new AddPeerRequestImpl();
     }
 
-    @Override public RaftClientMessages.AddPeerResponse.Builder createAddPeerResponse() {
+    @Override public AddPeerResponse.Builder createAddPeerResponse() {
         return new AddPeerResponseImpl();
     }
 
-    @Override public RaftClientMessages.RemovePeerRequest.Builder createRemovePeerRequest() {
+    @Override public RemovePeerRequest.Builder createRemovePeerRequest() {
         return new RemovePeerRequestImpl();
     }
 
-    @Override public RaftClientMessages.RemovePeerResponse.Builder createRemovePeerResponse() {
+    @Override public RemovePeerResponse.Builder createRemovePeerResponse() {
         return new RemovePeerResponseImpl();
     }
 
-    @Override public RaftClientMessages.ChangePeersRequest.Builder createChangePeerRequest() {
+    @Override public ChangePeersRequest.Builder createChangePeerRequest() {
         return new ChangePeerRequestImpl();
     }
 
-    @Override public RaftClientMessages.ChangePeersResponse.Builder createChangePeerResponse() {
+    @Override public ChangePeersResponse.Builder createChangePeerResponse() {
         return new ChangePeersResponseImpl();
     }
 
-    @Override public RaftClientMessages.SnapshotRequest.Builder createSnapshotRequest() {
+    @Override public SnapshotRequest.Builder createSnapshotRequest() {
         return new SnapshotRequestImpl();
     }
 
-    @Override public RaftClientMessages.ResetPeerRequest.Builder createResetPeerRequest() {
+    @Override public ResetPeerRequest.Builder createResetPeerRequest() {
         return new ResetPeerRequestImpl();
     }
 
-    @Override public RaftClientMessages.TransferLeaderRequest.Builder createTransferLeaderRequest() {
+    @Override public TransferLeaderRequest.Builder createTransferLeaderRequest() {
         return new TransferLeaderRequestImpl();
     }
 
-    @Override public RaftClientMessages.GetLeaderRequest.Builder createGetLeaderRequest() {
+    @Override public GetLeaderRequest.Builder createGetLeaderRequest() {
         return new GetLeaderRequestImpl();
     }
 
-    @Override public RaftClientMessages.GetLeaderResponse.Builder createGetLeaderResponse() {
+    @Override public GetLeaderResponse.Builder createGetLeaderResponse() {
         return new GetLeaderResponseImpl();
     }
 
-    @Override public RaftClientMessages.GetPeersRequest.Builder createGetPeersRequest() {
+    @Override public GetPeersRequest.Builder createGetPeersRequest() {
         return new GetPeersRequestImpl();
     }
 
-    @Override public RaftClientMessages.GetPeersResponse.Builder createGetPeersResponse() {
+    @Override public GetPeersResponse.Builder createGetPeersResponse() {
         return new GetPeersResponseImpl();
     }
 
-    @Override public RaftClientMessages.AddLearnersRequest.Builder createAddLearnersRequest() {
+    @Override public AddLearnersRequest.Builder createAddLearnersRequest() {
         return new AddLearnersRequestImpl();
     }
 
-    @Override public RaftClientMessages.RemoveLearnersRequest.Builder createRemoveLearnersRequest() {
+    @Override public RemoveLearnersRequest.Builder createRemoveLearnersRequest() {
         return new RemoveLearnersRequestImpl();
     }
 
-    @Override public RaftClientMessages.ResetLearnersRequest.Builder createResetLearnersRequest() {
+    @Override public ResetLearnersRequest.Builder createResetLearnersRequest() {
         return new ResetLearnersRequestImpl();
     }
 
-    @Override public RaftClientMessages.LearnersOpResponse.Builder createLearnersOpResponse() {
+    @Override public LearnersOpResponse.Builder createLearnersOpResponse() {
         return new LearnersOpResponseImpl();
     }
 
-    @Override public RaftClientMessages.UserRequest.Builder createUserRequest() {
+    @Override public UserRequest.Builder createUserRequest() {
         return new UserRequestImpl();
     }
 
-    @Override public RaftClientMessages.UserResponse.Builder createUserResponse() {
+    @Override public UserResponse.Builder createUserResponse() {
         return new UserResponseImpl();
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemoveLearnersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemoveLearnersRequestImpl.java
index fdb7f61..bd47d80 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemoveLearnersRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemoveLearnersRequestImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.RemoveLearnersRequest;
 
-class RemoveLearnersRequestImpl implements RaftClientMessages.RemoveLearnersRequest, RaftClientMessages.RemoveLearnersRequest.Builder {
+class RemoveLearnersRequestImpl implements RemoveLearnersRequest, RemoveLearnersRequest.Builder {
     private String groupId;
 
     private List<PeerId> learnersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class RemoveLearnersRequestImpl implements RaftClientMessages.RemoveLearnersRequ
         return this;
     }
 
-    @Override public RaftClientMessages.RemoveLearnersRequest build() {
+    @Override public RemoveLearnersRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerRequestImpl.java
index 335aa4b..bf4162f 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerRequestImpl.java
@@ -18,9 +18,9 @@
 package org.apache.ignite.raft.client.message.impl;
 
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.RemovePeerRequest;
 
-class RemovePeerRequestImpl implements RaftClientMessages.RemovePeerRequest, RaftClientMessages.RemovePeerRequest.Builder {
+class RemovePeerRequestImpl implements RemovePeerRequest, RemovePeerRequest.Builder {
     private String groupId;
 
     private PeerId peerId;
@@ -45,7 +45,7 @@ class RemovePeerRequestImpl implements RaftClientMessages.RemovePeerRequest, Raf
         return this;
     }
 
-    @Override public RaftClientMessages.RemovePeerRequest build() {
+    @Override public RemovePeerRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerResponseImpl.java
index 6f91817..9d05572 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerResponseImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerResponseImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.RemovePeerResponse;
 
-class RemovePeerResponseImpl implements RaftClientMessages.RemovePeerResponse, RaftClientMessages.RemovePeerResponse.Builder {
+class RemovePeerResponseImpl implements RemovePeerResponse, RemovePeerResponse.Builder {
     private List<PeerId> oldPeersList = new ArrayList<>();
 
     private List<PeerId> newPeersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class RemovePeerResponseImpl implements RaftClientMessages.RemovePeerResponse, R
         return this;
     }
 
-    @Override public RaftClientMessages.RemovePeerResponse build() {
+    @Override public RemovePeerResponse build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetLearnersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetLearnersRequestImpl.java
index 657f515..fe8b7b2 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetLearnersRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetLearnersRequestImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.ResetLearnersRequest;
 
-class ResetLearnersRequestImpl implements RaftClientMessages.ResetLearnersRequest, RaftClientMessages.ResetLearnersRequest.Builder {
+class ResetLearnersRequestImpl implements ResetLearnersRequest, ResetLearnersRequest.Builder {
     private String groupId;
 
     private List<PeerId> learnersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class ResetLearnersRequestImpl implements RaftClientMessages.ResetLearnersReques
         return this;
     }
 
-    @Override public RaftClientMessages.ResetLearnersRequest build() {
+    @Override public ResetLearnersRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetPeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetPeerRequestImpl.java
index 1a5a030..1de8883 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetPeerRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetPeerRequestImpl.java
@@ -20,9 +20,9 @@ package org.apache.ignite.raft.client.message.impl;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.ResetPeerRequest;
 
-class ResetPeerRequestImpl implements RaftClientMessages.ResetPeerRequest, RaftClientMessages.ResetPeerRequest.Builder {
+class ResetPeerRequestImpl implements ResetPeerRequest, ResetPeerRequest.Builder {
     private String groupId;
 
     private List<PeerId> newPeersList = new ArrayList<>();
@@ -47,7 +47,7 @@ class ResetPeerRequestImpl implements RaftClientMessages.ResetPeerRequest, RaftC
         return this;
     }
 
-    @Override public RaftClientMessages.ResetPeerRequest build() {
+    @Override public ResetPeerRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/SnapshotRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/SnapshotRequestImpl.java
index 69b3ac8..2ab6122 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/SnapshotRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/SnapshotRequestImpl.java
@@ -17,9 +17,9 @@
 
 package org.apache.ignite.raft.client.message.impl;
 
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.SnapshotRequest;
 
-class SnapshotRequestImpl implements RaftClientMessages.SnapshotRequest, RaftClientMessages.SnapshotRequest.Builder {
+class SnapshotRequestImpl implements SnapshotRequest, SnapshotRequest.Builder {
     private String groupId;
 
     @Override public String getGroupId() {
@@ -32,7 +32,7 @@ class SnapshotRequestImpl implements RaftClientMessages.SnapshotRequest, RaftCli
         return this;
     }
 
-    @Override public RaftClientMessages.SnapshotRequest build() {
+    @Override public SnapshotRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/TransferLeaderRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/TransferLeaderRequestImpl.java
index 3274e5a..950b601 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/TransferLeaderRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/TransferLeaderRequestImpl.java
@@ -18,9 +18,9 @@
 package org.apache.ignite.raft.client.message.impl;
 
 import org.apache.ignite.raft.client.PeerId;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.TransferLeaderRequest;
 
-class TransferLeaderRequestImpl implements RaftClientMessages.TransferLeaderRequest, RaftClientMessages.TransferLeaderRequest.Builder {
+class TransferLeaderRequestImpl implements TransferLeaderRequest, TransferLeaderRequest.Builder {
     private String groupId;
 
     private PeerId peerId;
@@ -39,7 +39,7 @@ class TransferLeaderRequestImpl implements RaftClientMessages.TransferLeaderRequ
         return this;
     }
 
-    @Override public RaftClientMessages.TransferLeaderRequest build() {
+    @Override public TransferLeaderRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserRequestImpl.java
index e933c24..3fc2ffd 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserRequestImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserRequestImpl.java
@@ -17,9 +17,9 @@
 
 package org.apache.ignite.raft.client.message.impl;
 
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.UserRequest;
 
-public class UserRequestImpl<T> implements RaftClientMessages.UserRequest, RaftClientMessages.UserRequest.Builder {
+public class UserRequestImpl<T> implements UserRequest, UserRequest.Builder {
     private Object request;
 
     private String groupId;
@@ -44,7 +44,7 @@ public class UserRequestImpl<T> implements RaftClientMessages.UserRequest, RaftC
         return this;
     }
 
-    @Override public RaftClientMessages.UserRequest build() {
+    @Override public UserRequest build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserResponseImpl.java
index 8c1a530..6fa718c 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserResponseImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserResponseImpl.java
@@ -17,9 +17,9 @@
 
 package org.apache.ignite.raft.client.message.impl;
 
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.UserResponse;
 
-public class UserResponseImpl<T> implements RaftClientMessages.UserResponse<T>, RaftClientMessages.UserResponse.Builder<T> {
+public class UserResponseImpl<T> implements UserResponse<T>, UserResponse.Builder<T> {
     private T response;
 
     @Override public T response() {
@@ -32,7 +32,7 @@ public class UserResponseImpl<T> implements RaftClientMessages.UserResponse<T>,
         return this;
     }
 
-    @Override public RaftClientMessages.UserResponse build() {
+    @Override public UserResponse build() {
         return this;
     }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClient.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClient.java
index c8a1d1c..b5fc1bb 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClient.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClient.java
@@ -23,21 +23,26 @@ import org.apache.ignite.raft.client.State;
 import org.apache.ignite.raft.client.PeerId;
 import org.apache.ignite.raft.client.message.impl.RaftClientMessageFactory;
 
-import static org.apache.ignite.raft.client.message.RaftClientMessages.AddLearnersRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.AddPeerRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.AddPeerResponse;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.ChangePeersRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.ChangePeersResponse;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.LearnersOpResponse;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.RemoveLearnersRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.RemovePeerRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.RemovePeerResponse;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.ResetLearnersRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.ResetPeerRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.SnapshotRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.TransferLeaderRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.UserRequest;
-import static org.apache.ignite.raft.client.message.RaftClientMessages.UserResponse;
+import org.apache.ignite.raft.client.message.AddLearnersRequest;
+
+import org.apache.ignite.raft.client.message.AddPeerRequest;
+import org.apache.ignite.raft.client.message.AddPeerResponse;
+import org.apache.ignite.raft.client.message.ChangePeersRequest;
+import org.apache.ignite.raft.client.message.ChangePeersResponse;
+import org.apache.ignite.raft.client.message.LearnersOpResponse;
+
+import org.apache.ignite.raft.client.message.RemoveLearnersRequest;
+
+import org.apache.ignite.raft.client.message.RemovePeerRequest;
+import org.apache.ignite.raft.client.message.RemovePeerResponse;
+import org.apache.ignite.raft.client.message.ResetLearnersRequest;
+
+import org.apache.ignite.raft.client.message.ResetPeerRequest;
+
+import org.apache.ignite.raft.client.message.SnapshotRequest;
+import org.apache.ignite.raft.client.message.TransferLeaderRequest;
+import org.apache.ignite.raft.client.message.UserRequest;
+import org.apache.ignite.raft.client.message.UserResponse;
 
 /**
  * Replication group RPC client.
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
index c70da48..9ae41d6 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/rpc/impl/RaftGroupRpcClientImpl.java
@@ -27,8 +27,23 @@ import org.apache.ignite.network.NetworkCluster;
 import org.apache.ignite.network.NetworkMember;
 import org.apache.ignite.raft.client.PeerId;
 import org.apache.ignite.raft.client.State;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
-import org.apache.ignite.raft.client.message.RaftClientMessages.GetLeaderResponse;
+import org.apache.ignite.raft.client.message.AddLearnersRequest;
+import org.apache.ignite.raft.client.message.AddPeerRequest;
+import org.apache.ignite.raft.client.message.AddPeerResponse;
+import org.apache.ignite.raft.client.message.ChangePeersRequest;
+import org.apache.ignite.raft.client.message.ChangePeersResponse;
+import org.apache.ignite.raft.client.message.GetLeaderRequest;
+import org.apache.ignite.raft.client.message.LearnersOpResponse;
+import org.apache.ignite.raft.client.message.GetLeaderResponse;
+import org.apache.ignite.raft.client.message.RemoveLearnersRequest;
+import org.apache.ignite.raft.client.message.RemovePeerRequest;
+import org.apache.ignite.raft.client.message.RemovePeerResponse;
+import org.apache.ignite.raft.client.message.ResetLearnersRequest;
+import org.apache.ignite.raft.client.message.ResetPeerRequest;
+import org.apache.ignite.raft.client.message.SnapshotRequest;
+import org.apache.ignite.raft.client.message.TransferLeaderRequest;
+import org.apache.ignite.raft.client.message.UserRequest;
+import org.apache.ignite.raft.client.message.UserResponse;
 import org.apache.ignite.raft.client.message.impl.RaftClientMessageFactory;
 import org.apache.ignite.raft.client.rpc.RaftGroupRpcClient;
 import org.jetbrains.annotations.Nullable;
@@ -78,7 +93,7 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
     @Override public CompletableFuture<PeerId> refreshLeader(String groupId) {
         StateImpl state = getState(groupId);
 
-        RaftClientMessages.GetLeaderRequest req = factory.createGetLeaderRequest().setGroupId(groupId).build();
+        GetLeaderRequest req = factory.createGetLeaderRequest().setGroupId(groupId).build();
 
         CompletableFuture<GetLeaderResponse> fut = cluster.sendWithResponse(initialCfgNodes.iterator().next(), req, defaultTimeout);
 
@@ -89,43 +104,43 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
         return null;
     }
 
-    @Override public CompletableFuture<RaftClientMessages.AddPeerResponse> addPeer(RaftClientMessages.AddPeerRequest request) {
+    @Override public CompletableFuture<AddPeerResponse> addPeer(AddPeerRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<RaftClientMessages.RemovePeerResponse> removePeer(RaftClientMessages.RemovePeerRequest request) {
+    @Override public CompletableFuture<RemovePeerResponse> removePeer(RemovePeerRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<Void> resetPeers(PeerId peerId, RaftClientMessages.ResetPeerRequest request) {
+    @Override public CompletableFuture<Void> resetPeers(PeerId peerId, ResetPeerRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<Void> snapshot(PeerId peerId, RaftClientMessages.SnapshotRequest request) {
+    @Override public CompletableFuture<Void> snapshot(PeerId peerId, SnapshotRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<RaftClientMessages.ChangePeersResponse> changePeers(RaftClientMessages.ChangePeersRequest request) {
+    @Override public CompletableFuture<ChangePeersResponse> changePeers(ChangePeersRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<RaftClientMessages.LearnersOpResponse> addLearners(RaftClientMessages.AddLearnersRequest request) {
+    @Override public CompletableFuture<LearnersOpResponse> addLearners(AddLearnersRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<RaftClientMessages.LearnersOpResponse> removeLearners(RaftClientMessages.RemoveLearnersRequest request) {
+    @Override public CompletableFuture<LearnersOpResponse> removeLearners(RemoveLearnersRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<RaftClientMessages.LearnersOpResponse> resetLearners(RaftClientMessages.ResetLearnersRequest request) {
+    @Override public CompletableFuture<LearnersOpResponse> resetLearners(ResetLearnersRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<Void> transferLeader(RaftClientMessages.TransferLeaderRequest request) {
+    @Override public CompletableFuture<Void> transferLeader(TransferLeaderRequest request) {
         return null;
     }
 
-    @Override public CompletableFuture<RaftClientMessages.UserResponse> submit(RaftClientMessages.UserRequest request) {
+    @Override public CompletableFuture<UserResponse> submit(UserRequest request) {
         if (request.getGroupId() == null)
             throw new IllegalArgumentException("groupId is required");
 
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestListener.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestListener.java
index b185ac3..34c617b 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestListener.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestListener.java
@@ -18,12 +18,14 @@
 package org.apache.ignite.raft.client.service;
 
 import java.util.Iterator;
+import org.apache.ignite.raft.client.ReadCommand;
+import org.apache.ignite.raft.client.WriteCommand;
 
 /**
  * A listener for replication group client requests.
  */
 public interface RaftGroupClientRequestListener {
-    void onReads(Iterator iterator);
+    void onRead(Iterator<ReadCommand> iterator);
 
-    void onWrites(Iterator iterator);
+    void onWrite(Iterator<WriteCommand> iterator);
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestService.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestService.java
index fcff2ed..d5dee37 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestService.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestService.java
@@ -18,16 +18,17 @@
 package org.apache.ignite.raft.client.service;
 
 import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.raft.client.Command;
 
 /**
  * Replication group client service.
  */
 public interface RaftGroupClientRequestService {
     /**
-     * Submits a custom request to a replication group leader. If a leader is not initialized yet will try to resolve it.
-     * @param request User request.
+     * Submits a command to a replication group leader. If a leader is not initialized yet will try to resolve it.
+     * @param cmd Command.
      * @param <R> Response type.
      * @return A future with the result.
      */
-    <R> CompletableFuture<R> submit(Object request);
+    <R> CompletableFuture<R> submit(Command cmd);
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupClientRequestServiceImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupClientRequestServiceImpl.java
index ea59d8d..cc5e781 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupClientRequestServiceImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupClientRequestServiceImpl.java
@@ -18,7 +18,11 @@
 package org.apache.ignite.raft.client.service.impl;
 
 import java.util.concurrent.CompletableFuture;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import java.util.concurrent.ExecutionException;
+import org.apache.ignite.raft.client.Command;
+import org.apache.ignite.raft.client.PeerId;
+import org.apache.ignite.raft.client.message.UserRequest;
+import org.apache.ignite.raft.client.message.UserResponse;
 import org.apache.ignite.raft.client.rpc.RaftGroupRpcClient;
 import org.apache.ignite.raft.client.service.RaftGroupClientRequestService;
 
@@ -39,14 +43,20 @@ public class RaftGroupClientRequestServiceImpl implements RaftGroupClientRequest
     public RaftGroupClientRequestServiceImpl(RaftGroupRpcClient rpcClient, String groupId) {
         this.rpcClient = rpcClient;
         this.groupId = groupId;
+
+        try {
+            PeerId peerId = rpcClient.refreshLeader(groupId).get();
+        }
+        catch (Exception e) {
+            // TODO log error.
+        }
     }
 
     /** {@inheritDoc} */
-    @Override public <R> CompletableFuture<R> submit(Object request) {
-        RaftClientMessages.UserRequest r =
-            rpcClient.factory().createUserRequest().setRequest(request).setGroupId(groupId).build();
+    @Override public <R> CompletableFuture<R> submit(Command cmd) {
+        UserRequest r = rpcClient.factory().createUserRequest().setRequest(cmd).setGroupId(groupId).build();
 
-        CompletableFuture<RaftClientMessages.UserResponse<R>> fut = rpcClient.submit(r);
+        CompletableFuture<UserResponse<R>> fut = rpcClient.submit(r);
 
         return fut.thenApply(resp -> resp.response());
     }
diff --git a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/MockUtils.java b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/MockUtils.java
index 7580975..a868636 100644
--- a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/MockUtils.java
+++ b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/MockUtils.java
@@ -17,11 +17,13 @@
 
 package org.apache.ignite.raft.client;
 
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeoutException;
 import org.apache.ignite.network.NetworkCluster;
 import org.apache.ignite.network.NetworkMember;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.GetLeaderRequest;
+import org.apache.ignite.raft.client.message.GetLeaderResponse;
+import org.apache.ignite.raft.client.message.UserRequest;
+import org.apache.ignite.raft.client.message.UserResponse;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
@@ -38,13 +40,13 @@ import static org.mockito.ArgumentMatchers.eq;
 public class MockUtils {
     public static PeerId LEADER = new PeerId(new NetworkMember("test"));
 
-    public static class TestInput1 {
+    public static class TestInput1 implements WriteCommand {
     }
 
     public static class TestOutput1 {
     }
 
-    public static class TestInput2 {
+    public static class TestInput2 implements ReadCommand {
     }
 
     public static class TestOutput2 {
@@ -53,12 +55,12 @@ public class MockUtils {
     public static void mockUserInput1(NetworkCluster cluster) {
         Mockito.doAnswer(new Answer() {
             @Override public Object answer(InvocationOnMock invocation) throws Throwable {
-                RaftClientMessages.UserResponse resp = MESSAGE_FACTORY.createUserResponse().setResponse(new TestOutput1()).build();
+                UserResponse resp = MESSAGE_FACTORY.createUserResponse().setResponse(new TestOutput1()).build();
 
                 return completedFuture(resp);
             }
-        }).when(cluster).sendWithResponse(eq(LEADER.getNode()), argThat(new ArgumentMatcher<RaftClientMessages.UserRequest>() {
-            @Override public boolean matches(RaftClientMessages.UserRequest arg) {
+        }).when(cluster).sendWithResponse(eq(LEADER.getNode()), argThat(new ArgumentMatcher<UserRequest>() {
+            @Override public boolean matches(UserRequest arg) {
                 return arg.request() instanceof TestInput1;
             }
         }), anyLong());
@@ -67,12 +69,12 @@ public class MockUtils {
     public static void mockUserInput2(NetworkCluster cluster) {
         Mockito.doAnswer(new Answer() {
             @Override public Object answer(InvocationOnMock invocation) throws Throwable {
-                RaftClientMessages.UserResponse resp = MESSAGE_FACTORY.createUserResponse().setResponse(new TestOutput2()).build();
+                UserResponse resp = MESSAGE_FACTORY.createUserResponse().setResponse(new TestOutput2()).build();
 
                 return completedFuture(resp);
             }
-        }).when(cluster).sendWithResponse(eq(LEADER.getNode()), argThat(new ArgumentMatcher<RaftClientMessages.UserRequest>() {
-            @Override public boolean matches(RaftClientMessages.UserRequest arg) {
+        }).when(cluster).sendWithResponse(eq(LEADER.getNode()), argThat(new ArgumentMatcher<UserRequest>() {
+            @Override public boolean matches(UserRequest arg) {
                 return arg.request() instanceof TestInput2;
             }
         }), anyLong());
@@ -81,10 +83,10 @@ public class MockUtils {
     public static void mockLeaderRequest(NetworkCluster cluster, boolean timeout) {
         Mockito.doAnswer(new Answer() {
             @Override public Object answer(InvocationOnMock invocation) throws Throwable {
-                RaftClientMessages.GetLeaderResponse resp = MESSAGE_FACTORY.createGetLeaderResponse().setLeaderId(LEADER).build();
+                GetLeaderResponse resp = MESSAGE_FACTORY.createGetLeaderResponse().setLeaderId(LEADER).build();
 
                 return timeout ? failedFuture(new TimeoutException()) : completedFuture(resp);
             }
-        }).when(cluster).sendWithResponse(eq(LEADER.getNode()), any(RaftClientMessages.GetLeaderRequest.class), anyLong());
+        }).when(cluster).sendWithResponse(eq(LEADER.getNode()), any(GetLeaderRequest.class), anyLong());
     }
 }
diff --git a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClientTest.java b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClientTest.java
index 2dd1c52..c6c4f21 100644
--- a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClientTest.java
+++ b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/rpc/RaftGroupRpcClientTest.java
@@ -26,7 +26,7 @@ import org.apache.ignite.raft.client.MockUtils.TestInput1;
 import org.apache.ignite.raft.client.MockUtils.TestInput2;
 import org.apache.ignite.raft.client.MockUtils.TestOutput1;
 import org.apache.ignite.raft.client.MockUtils.TestOutput2;
-import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.UserRequest;
 import org.apache.ignite.raft.client.rpc.impl.RaftGroupRpcClientImpl;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -134,12 +134,12 @@ public class RaftGroupRpcClientTest {
 
         RaftGroupRpcClient client = new RaftGroupRpcClientImpl(cluster, MESSAGE_FACTORY, 5_000, singleton(LEADER.getNode()));
 
-        RaftClientMessages.UserRequest req1 =
+        UserRequest req1 =
             client.factory().createUserRequest().setGroupId(groupId).setRequest(new TestInput1()).build();
 
         assertTrue(client.submit(req1).get().response() instanceof TestOutput1);
 
-        RaftClientMessages.UserRequest req2 =
+        UserRequest req2 =
             client.factory().createUserRequest().setGroupId(groupId).setRequest(new TestInput2()).build();
 
         assertTrue(client.submit(req2).get().response() instanceof TestOutput2);
diff --git a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestServiceTest.java b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestServiceTest.java
index ea3adc4..fefc9b8 100644
--- a/modules/raft-client/src/test/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestServiceTest.java
+++ b/modules/raft-client/src/test/java/org/apache/ignite/raft/client/service/RaftGroupClientRequestServiceTest.java
@@ -60,7 +60,7 @@ public class RaftGroupClientRequestServiceTest {
         RaftGroupClientRequestService reqService = new RaftGroupClientRequestServiceImpl(rpcClient, groupId);
         RaftGroupManagmentService mgmtService = new RaftGroupManagementServiceImpl(rpcClient, groupId);
 
-        assertNull(mgmtService.getLeader());
+        assertEquals(LEADER, mgmtService.getLeader());
 
         CompletableFuture<TestOutput1> fut1 = reqService.submit(new TestInput1());
 
@@ -73,7 +73,5 @@ public class RaftGroupClientRequestServiceTest {
         TestOutput2 output2 = fut2.get();
 
         assertNotNull(output2);
-
-        assertEquals(LEADER, mgmtService.getLeader());
     }
 }