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:48 UTC

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

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());
     }
 }