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/01 18:35:14 UTC

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

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 060e6e2c786b470e4e6201279fe7b08d08b6013f
Author: Alexey Scherbakov <al...@gmail.com>
AuthorDate: Mon Mar 1 21:04:02 2021 +0300

    IGNITE-14149 Cleanup code.
---
 .../network/scalecube/ScaleCubeNetworkCluster.java |  3 --
 .../org/apache/ignite/raft/ElectionPriority.java   |  1 +
 .../main/java/org/apache/ignite/raft/PeerId.java   |  1 +
 .../main/java/org/apache/ignite/raft/State.java    |  5 +-
 .../client/message/AddLearnersRequestImpl.java     | 36 ---------------
 .../raft/client/message/AddPeerRequestImpl.java    | 34 --------------
 .../raft/client/message/AddPeerResponseImpl.java   | 35 --------------
 .../raft/client/message/ChangePeerRequestImpl.java | 35 --------------
 .../client/message/ChangePeersResponseImpl.java    | 35 --------------
 .../raft/client/message/GetLeaderRequestImpl.java  | 22 ---------
 .../raft/client/message/GetLeaderResponseImpl.java | 23 ----------
 .../raft/client/message/GetPeersRequestImpl.java   | 32 -------------
 .../raft/client/message/GetPeersResponseImpl.java  | 35 --------------
 .../client/message/LearnersOpResponseImpl.java     | 35 --------------
 .../client/{ => message}/RaftClientMessages.java   | 14 ++++--
 .../client/message/RemoveLearnersRequestImpl.java  | 35 --------------
 .../raft/client/message/RemovePeerRequestImpl.java | 33 --------------
 .../client/message/RemovePeerResponseImpl.java     | 35 --------------
 .../client/message/ResetLearnersRequestImpl.java   | 35 --------------
 .../raft/client/message/ResetPeerRequestImpl.java  | 35 --------------
 .../raft/client/message/SnapshotRequestImpl.java   | 21 ---------
 .../client/message/TransferLeaderRequestImpl.java  | 27 -----------
 .../raft/client/message/UserRequestImpl.java       | 32 -------------
 .../raft/client/message/UserResponseImpl.java      | 21 ---------
 .../message/impl/AddLearnersRequestImpl.java       | 53 ++++++++++++++++++++++
 .../client/message/impl/AddPeerRequestImpl.java    | 51 +++++++++++++++++++++
 .../client/message/impl/AddPeerResponseImpl.java   | 53 ++++++++++++++++++++++
 .../client/message/impl/ChangePeerRequestImpl.java | 53 ++++++++++++++++++++++
 .../message/impl/ChangePeersResponseImpl.java      | 53 ++++++++++++++++++++++
 .../message/impl/GetLeaderRequestImpl.java}        | 29 +++++++-----
 .../message/impl/GetLeaderResponseImpl.java}       | 30 +++++++-----
 .../client/message/impl/GetPeersRequestImpl.java   | 50 ++++++++++++++++++++
 .../client/message/impl/GetPeersResponseImpl.java  | 53 ++++++++++++++++++++++
 .../message/impl/LearnersOpResponseImpl.java       | 53 ++++++++++++++++++++++
 .../{ => impl}/RaftClientMessageFactory.java       | 23 ++++++++--
 .../{ => impl}/RaftClientMessageFactoryImpl.java   | 21 ++++++++-
 .../message/impl/RemoveLearnersRequestImpl.java    | 53 ++++++++++++++++++++++
 .../client/message/impl/RemovePeerRequestImpl.java | 51 +++++++++++++++++++++
 .../message/impl/RemovePeerResponseImpl.java       | 53 ++++++++++++++++++++++
 .../message/impl/ResetLearnersRequestImpl.java     | 53 ++++++++++++++++++++++
 .../client/message/impl/ResetPeerRequestImpl.java  | 53 ++++++++++++++++++++++
 .../message/impl/SnapshotRequestImpl.java}         | 29 +++++++-----
 .../message/impl/TransferLeaderRequestImpl.java    | 45 ++++++++++++++++++
 .../raft/client/message/impl/UserRequestImpl.java  | 50 ++++++++++++++++++++
 .../message/impl/UserResponseImpl.java}            | 29 +++++++-----
 .../ignite/raft/client/rpc/RaftGroupRpcClient.java | 35 +++++++-------
 .../client/rpc/impl/RaftGroupRpcClientImpl.java    | 30 ++++++++++--
 .../service/RaftGroupClientRequestListener.java    | 17 +++++++
 .../service/RaftGroupClientRequestService.java     | 17 +++++++
 .../client/service/RaftGroupManagmentService.java  | 17 +++++++
 .../impl/RaftGroupClientRequestServiceImpl.java    | 20 +++++++-
 .../impl/RaftGroupManagementServiceImpl.java       | 17 +++++++
 .../org/apache/ignite/raft/client/MockUtils.java   | 20 +++++++-
 .../raft/client/rpc/RaftGroupRpcClientTest.java    | 21 ++++++++-
 .../service/RaftGroupClientRequestServiceTest.java | 19 +++++++-
 55 files changed, 1089 insertions(+), 682 deletions(-)

diff --git a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeNetworkCluster.java b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeNetworkCluster.java
index f2ebbac..f33b619 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeNetworkCluster.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeNetworkCluster.java
@@ -16,12 +16,9 @@
  */
 package org.apache.ignite.network.scalecube;
 
-import io.scalecube.cluster.transport.api.Message;
-import java.time.Duration;
 import java.util.Collection;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Future;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 import io.scalecube.cluster.Cluster;
 import org.apache.ignite.network.NetworkCluster;
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/ElectionPriority.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/ElectionPriority.java
index 8dd5ddf..90a2907 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/ElectionPriority.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/ElectionPriority.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.ignite.raft;
 
 /**
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/PeerId.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/PeerId.java
index 9587c87..b98baab 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/PeerId.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/PeerId.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.ignite.raft;
 
 import java.io.Serializable;
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
index 5001d74..6b7e076 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
@@ -6,7 +6,7 @@
  * (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
+ *      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,
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.ignite.raft;
 
 import java.util.List;
@@ -22,7 +23,7 @@ import org.jetbrains.annotations.Nullable;
 /**
  * Raft group state.
  */
-public interface State  {
+public interface State {
     @Nullable PeerId leader();
 
     @Nullable List<PeerId> peers();
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddLearnersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddLearnersRequestImpl.java
deleted file mode 100644
index dec9076..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddLearnersRequestImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-public class AddLearnersRequestImpl implements RaftClientMessages.AddLearnersRequest, RaftClientMessages.AddLearnersRequest.Builder {
-    private String groupId;
-    private PeerId leaderId;
-    private List<PeerId> learnersList = new ArrayList<>();
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public List<PeerId> getLearnersList() {
-        return learnersList;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder addLearners(PeerId learnerId) {
-        learnersList.add(learnerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.AddLearnersRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerRequestImpl.java
deleted file mode 100644
index d18ee14..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerRequestImpl.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class AddPeerRequestImpl implements RaftClientMessages.AddPeerRequest, RaftClientMessages.AddPeerRequest.Builder {
-    private String groupId;
-    private PeerId leaderId;
-    private PeerId peerId;
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public PeerId getPeerId() {
-        return peerId;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder setPeerId(PeerId peerId) {
-        this.peerId = peerId;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.AddPeerRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerResponseImpl.java
deleted file mode 100644
index b9e1c00..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/AddPeerResponseImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class AddPeerResponseImpl implements RaftClientMessages.AddPeerResponse, RaftClientMessages.AddPeerResponse.Builder {
-    private List<PeerId> oldPeersList = new ArrayList<>();
-    private List<PeerId> newPeersList = new ArrayList<>();
-
-    @Override public List<PeerId> getOldPeersList() {
-        return oldPeersList;
-    }
-
-    @Override public List<PeerId> getNewPeersList() {
-        return newPeersList;
-    }
-
-    @Override public Builder addOldPeers(PeerId oldPeersId) {
-        oldPeersList.add(oldPeersId);
-
-        return this;
-    }
-
-    @Override public Builder addNewPeers(PeerId newPeersId) {
-        newPeersList.add(newPeersId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.AddPeerResponse build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeerRequestImpl.java
deleted file mode 100644
index 4c611c7..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeerRequestImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class ChangePeerRequestImpl implements RaftClientMessages.ChangePeersRequest, RaftClientMessages.ChangePeersRequest.Builder {
-    private String groupId;
-    private List<PeerId> newPeersList = new ArrayList<>();
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public List<PeerId> getNewPeersList() {
-        return newPeersList;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder addNewPeers(PeerId peerId) {
-        newPeersList.add(peerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.ChangePeersRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersResponseImpl.java
deleted file mode 100644
index bc9f74d..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ChangePeersResponseImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class ChangePeersResponseImpl implements RaftClientMessages.ChangePeersResponse, RaftClientMessages.ChangePeersResponse.Builder {
-    private List<PeerId> oldPeersList = new ArrayList<>();
-    private List<PeerId> newPeersList = new ArrayList<>();
-
-    @Override public List<PeerId> getOldPeersList() {
-        return oldPeersList;
-    }
-
-    @Override public List<PeerId> getNewPeersList() {
-        return newPeersList;
-    }
-
-    @Override public Builder addOldPeers(PeerId oldPeerId) {
-        oldPeersList.add(oldPeerId);
-
-        return this;
-    }
-
-    @Override public Builder addNewPeers(PeerId newPeerId) {
-        newPeersList.add(newPeerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.ChangePeersResponse build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderRequestImpl.java
deleted file mode 100644
index 4162f81..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderRequestImpl.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-public class GetLeaderRequestImpl implements RaftClientMessages.GetLeaderRequest, RaftClientMessages.GetLeaderRequest.Builder {
-    private String groupId;
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.GetLeaderRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderResponseImpl.java
deleted file mode 100644
index 0c84245..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetLeaderResponseImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-public class GetLeaderResponseImpl implements RaftClientMessages.GetLeaderResponse, RaftClientMessages.GetLeaderResponse.Builder {
-    private PeerId leaderId;
-
-    @Override public PeerId getLeaderId() {
-        return leaderId;
-    }
-
-    @Override public RaftClientMessages.GetLeaderResponse build() {
-        return this;
-    }
-
-    @Override public Builder setLeaderId(PeerId leaderId) {
-        this.leaderId = leaderId;
-
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersRequestImpl.java
deleted file mode 100644
index d3a2d99..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersRequestImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class GetPeersRequestImpl implements RaftClientMessages.GetPeersRequest, RaftClientMessages.GetPeersRequest.Builder {
-    private String groupId;
-    private boolean onlyAlive;
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public boolean getOnlyAlive() {
-        return onlyAlive;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder setOnlyAlive(boolean onlyGetAlive) {
-        this.onlyAlive = onlyGetAlive;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.GetPeersRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersResponseImpl.java
deleted file mode 100644
index bed9b6e..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/GetPeersResponseImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class GetPeersResponseImpl implements RaftClientMessages.GetPeersResponse, RaftClientMessages.GetPeersResponse.Builder {
-    private List<PeerId> peersList = new ArrayList<>();
-    private List<PeerId> learnersList = new ArrayList<>();
-
-    @Override public List<PeerId> getPeersList() {
-        return peersList;
-    }
-
-    @Override public List<PeerId> getLearnersList() {
-        return learnersList;
-    }
-
-    @Override public Builder addPeers(PeerId peerId) {
-        peersList.add(peerId);
-
-        return this;
-    }
-
-    @Override public Builder addLearners(PeerId learnerId) {
-        learnersList.add(learnerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.GetPeersResponse build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/LearnersOpResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/LearnersOpResponseImpl.java
deleted file mode 100644
index b929e90..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/LearnersOpResponseImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class LearnersOpResponseImpl implements RaftClientMessages.LearnersOpResponse, RaftClientMessages.LearnersOpResponse.Builder {
-    private List<PeerId> oldLearnersList = new ArrayList<>();
-    private List<PeerId> newLearnersList = new ArrayList<>();
-
-    @Override public List<PeerId> getOldLearnersList() {
-        return oldLearnersList;
-    }
-
-    @Override public List<PeerId> getNewLearnersList() {
-        return newLearnersList;
-    }
-
-    @Override public Builder addOldLearners(PeerId oldLearnersId) {
-        oldLearnersList.add(oldLearnersId);
-
-        return this;
-    }
-
-    @Override public Builder addNewLearners(PeerId newLearnersId) {
-        newLearnersList.add(newLearnersId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.LearnersOpResponse build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftClientMessages.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessages.java
similarity index 96%
rename from modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftClientMessages.java
rename to modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessages.java
index c809a0d..f8fd914 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/RaftClientMessages.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessages.java
@@ -6,7 +6,7 @@
  * (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
+ *      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,
@@ -14,10 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: cli.proto
 
-package org.apache.ignite.raft.client;
+package org.apache.ignite.raft.client.message;
 
 import java.util.List;
 import org.apache.ignite.raft.PeerId;
@@ -118,6 +116,8 @@ public final class RaftClientMessages {
     }
 
     public interface SnapshotRequest {
+        String getGroupId();
+
         public interface Builder {
             Builder setGroupId(String groupId);
 
@@ -138,6 +138,8 @@ public final class RaftClientMessages {
     }
 
     public interface TransferLeaderRequest {
+        String getGroupId();
+
         PeerId getPeerId();
 
         public interface Builder {
@@ -148,6 +150,8 @@ public final class RaftClientMessages {
     }
 
     public interface GetLeaderRequest {
+        String getGroupId();
+
         public interface Builder {
             Builder setGroupId(String groupId);
 
@@ -227,7 +231,7 @@ public final class RaftClientMessages {
         }
     }
 
-    public interface LearnersOpResponse  {
+    public interface LearnersOpResponse {
         List<PeerId> getOldLearnersList();
 
         List<PeerId> getNewLearnersList();
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemoveLearnersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemoveLearnersRequestImpl.java
deleted file mode 100644
index b319b69..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemoveLearnersRequestImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class RemoveLearnersRequestImpl implements RaftClientMessages.RemoveLearnersRequest, RaftClientMessages.RemoveLearnersRequest.Builder {
-    private String groupId;
-    private List<PeerId> learnersList = new ArrayList<>();
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public List<PeerId> getLearnersList() {
-        return learnersList;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder addLearners(PeerId learnerId) {
-        learnersList.add(learnerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.RemoveLearnersRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerRequestImpl.java
deleted file mode 100644
index a6d57b1..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerRequestImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class RemovePeerRequestImpl implements RaftClientMessages.RemovePeerRequest, RaftClientMessages.RemovePeerRequest.Builder {
-    private String groupId;
-    private PeerId peerId;
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public PeerId getPeerId() {
-        return peerId;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder setPeerId(PeerId peerId) {
-        this.peerId = peerId;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.RemovePeerRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerResponseImpl.java
deleted file mode 100644
index 00eae18..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RemovePeerResponseImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class RemovePeerResponseImpl implements RaftClientMessages.RemovePeerResponse, RaftClientMessages.RemovePeerResponse.Builder {
-    private List<PeerId> oldPeersList = new ArrayList<>();
-    private List<PeerId> newPeersList = new ArrayList<>();
-
-    @Override public List<PeerId> getOldPeersList() {
-        return oldPeersList;
-    }
-
-    @Override public List<PeerId> getNewPeersList() {
-        return newPeersList;
-    }
-
-    @Override public Builder addOldPeers(PeerId oldPeerId) {
-        oldPeersList.add(oldPeerId);
-
-        return this;
-    }
-
-    @Override public Builder addNewPeers(PeerId newPeerId) {
-        newPeersList.add(newPeerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.RemovePeerResponse build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetLearnersRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetLearnersRequestImpl.java
deleted file mode 100644
index e1d144d..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetLearnersRequestImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class ResetLearnersRequestImpl implements RaftClientMessages.ResetLearnersRequest, RaftClientMessages.ResetLearnersRequest.Builder {
-    private String groupId;
-    private List<PeerId> learnersList = new ArrayList<>();
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public List<PeerId> getLearnersList() {
-        return learnersList;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder addLearners(PeerId learnerId) {
-        learnersList.add(learnerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.ResetLearnersRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetPeerRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetPeerRequestImpl.java
deleted file mode 100644
index 4ead585..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/ResetPeerRequestImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class ResetPeerRequestImpl implements RaftClientMessages.ResetPeerRequest, RaftClientMessages.ResetPeerRequest.Builder {
-    private String groupId;
-    private List<PeerId> newPeersList = new ArrayList<>();
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public List<PeerId> getNewPeersList() {
-        return newPeersList;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder addNewPeers(PeerId peerId) {
-        newPeersList.add(peerId);
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.ResetPeerRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/SnapshotRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/SnapshotRequestImpl.java
deleted file mode 100644
index 2b2eea6..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/SnapshotRequestImpl.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class SnapshotRequestImpl implements RaftClientMessages.SnapshotRequest, RaftClientMessages.SnapshotRequest.Builder {
-    private String groupId;
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.SnapshotRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/TransferLeaderRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/TransferLeaderRequestImpl.java
deleted file mode 100644
index 24957df..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/TransferLeaderRequestImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-class TransferLeaderRequestImpl implements RaftClientMessages.TransferLeaderRequest, RaftClientMessages.TransferLeaderRequest.Builder {
-    private String groupId;
-    private PeerId peerId;
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    @Override public PeerId getPeerId() {
-        return peerId;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.TransferLeaderRequest build() {
-        return this;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserRequestImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserRequestImpl.java
deleted file mode 100644
index 93cc463..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserRequestImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-public class UserRequestImpl<T> implements RaftClientMessages.UserRequest, RaftClientMessages.UserRequest.Builder {
-    private Object request;
-    private String groupId;
-
-    @Override public Object request() {
-        return request;
-    }
-
-    @Override public Builder setGroupId(String groupId) {
-        this.groupId = groupId;
-
-        return this;
-    }
-
-    @Override public Builder setRequest(Object request) {
-        this.request = request;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.UserRequest build() {
-        return this;
-    }
-
-    @Override public String getGroupId() {
-        return groupId;
-    }
-}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserResponseImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserResponseImpl.java
deleted file mode 100644
index 0d62953..0000000
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/UserResponseImpl.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.client.RaftClientMessages;
-
-public class UserResponseImpl<T> implements RaftClientMessages.UserResponse<T>, RaftClientMessages.UserResponse.Builder<T> {
-    private T response;
-
-    @Override public T response() {
-        return response;
-    }
-
-    @Override public Builder setResponse(T response) {
-        this.response = response;
-
-        return this;
-    }
-
-    @Override public RaftClientMessages.UserResponse build() {
-        return this;
-    }
-}
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
new file mode 100644
index 0000000..8f2be91
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddLearnersRequestImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+public class AddLearnersRequestImpl implements RaftClientMessages.AddLearnersRequest, RaftClientMessages.AddLearnersRequest.Builder {
+    private String groupId;
+
+    private List<PeerId> learnersList = new ArrayList<>();
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public List<PeerId> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder addLearners(PeerId learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..b492c4d
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerRequestImpl.java
@@ -0,0 +1,51 @@
+/*
+ * 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.impl;
+
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class AddPeerRequestImpl implements RaftClientMessages.AddPeerRequest, RaftClientMessages.AddPeerRequest.Builder {
+    private String groupId;
+
+    private PeerId peerId;
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public PeerId getPeerId() {
+        return peerId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(PeerId peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..61f2450
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/AddPeerResponseImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class AddPeerResponseImpl implements RaftClientMessages.AddPeerResponse, RaftClientMessages.AddPeerResponse.Builder {
+    private List<PeerId> oldPeersList = new ArrayList<>();
+
+    private List<PeerId> newPeersList = new ArrayList<>();
+
+    @Override public List<PeerId> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public List<PeerId> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public Builder addOldPeers(PeerId oldPeersId) {
+        oldPeersList.add(oldPeersId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(PeerId newPeersId) {
+        newPeersList.add(newPeersId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..657ef63
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeerRequestImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class ChangePeerRequestImpl implements RaftClientMessages.ChangePeersRequest, RaftClientMessages.ChangePeersRequest.Builder {
+    private String groupId;
+
+    private List<PeerId> newPeersList = new ArrayList<>();
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public List<PeerId> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(PeerId peerId) {
+        newPeersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..f33f4c0
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ChangePeersResponseImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class ChangePeersResponseImpl implements RaftClientMessages.ChangePeersResponse, RaftClientMessages.ChangePeersResponse.Builder {
+    private List<PeerId> oldPeersList = new ArrayList<>();
+
+    private List<PeerId> newPeersList = new ArrayList<>();
+
+    @Override public List<PeerId> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public List<PeerId> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public Builder addOldPeers(PeerId oldPeerId) {
+        oldPeersList.add(oldPeerId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(PeerId newPeerId) {
+        newPeersList.add(newPeerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.ChangePeersResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderRequestImpl.java
similarity index 55%
copy from modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
copy to modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderRequestImpl.java
index 5001d74..6a2ae69 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderRequestImpl.java
@@ -6,7 +6,7 @@
  * (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
+ *      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,
@@ -14,18 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ignite.raft;
 
-import java.util.List;
-import org.jetbrains.annotations.Nullable;
+package org.apache.ignite.raft.client.message.impl;
 
-/**
- * Raft group state.
- */
-public interface State  {
-    @Nullable PeerId leader();
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+public class GetLeaderRequestImpl implements RaftClientMessages.GetLeaderRequest, RaftClientMessages.GetLeaderRequest.Builder {
+    private String groupId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
 
-    @Nullable List<PeerId> peers();
+        return this;
+    }
 
-    @Nullable List<PeerId> learners();
+    @Override public RaftClientMessages.GetLeaderRequest build() {
+        return this;
+    }
 }
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderResponseImpl.java
similarity index 53%
copy from modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
copy to modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderResponseImpl.java
index 5001d74..3e62084 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetLeaderResponseImpl.java
@@ -6,7 +6,7 @@
  * (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
+ *      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,
@@ -14,18 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ignite.raft;
 
-import java.util.List;
-import org.jetbrains.annotations.Nullable;
+package org.apache.ignite.raft.client.message.impl;
 
-/**
- * Raft group state.
- */
-public interface State  {
-    @Nullable PeerId leader();
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+public class GetLeaderResponseImpl implements RaftClientMessages.GetLeaderResponse, RaftClientMessages.GetLeaderResponse.Builder {
+    private PeerId leaderId;
+
+    @Override public PeerId getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public RaftClientMessages.GetLeaderResponse build() {
+        return this;
+    }
 
-    @Nullable List<PeerId> peers();
+    @Override public Builder setLeaderId(PeerId leaderId) {
+        this.leaderId = leaderId;
 
-    @Nullable List<PeerId> learners();
+        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
new file mode 100644
index 0000000..0d6842a
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersRequestImpl.java
@@ -0,0 +1,50 @@
+/*
+ * 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.impl;
+
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class GetPeersRequestImpl implements RaftClientMessages.GetPeersRequest, RaftClientMessages.GetPeersRequest.Builder {
+    private String groupId;
+
+    private boolean onlyAlive;
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public boolean getOnlyAlive() {
+        return onlyAlive;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setOnlyAlive(boolean onlyGetAlive) {
+        this.onlyAlive = onlyGetAlive;
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..a5fc836
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/GetPeersResponseImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class GetPeersResponseImpl implements RaftClientMessages.GetPeersResponse, RaftClientMessages.GetPeersResponse.Builder {
+    private List<PeerId> peersList = new ArrayList<>();
+
+    private List<PeerId> learnersList = new ArrayList<>();
+
+    @Override public List<PeerId> getPeersList() {
+        return peersList;
+    }
+
+    @Override public List<PeerId> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public Builder addPeers(PeerId peerId) {
+        peersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public Builder addLearners(PeerId learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..0e846d2
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/LearnersOpResponseImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class LearnersOpResponseImpl implements RaftClientMessages.LearnersOpResponse, RaftClientMessages.LearnersOpResponse.Builder {
+    private List<PeerId> oldLearnersList = new ArrayList<>();
+
+    private List<PeerId> newLearnersList = new ArrayList<>();
+
+    @Override public List<PeerId> getOldLearnersList() {
+        return oldLearnersList;
+    }
+
+    @Override public List<PeerId> getNewLearnersList() {
+        return newLearnersList;
+    }
+
+    @Override public Builder addOldLearners(PeerId oldLearnersId) {
+        oldLearnersList.add(oldLearnersId);
+
+        return this;
+    }
+
+    @Override public Builder addNewLearners(PeerId newLearnersId) {
+        newLearnersList.add(newLearnersId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.LearnersOpResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessageFactory.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactory.java
similarity index 62%
rename from modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessageFactory.java
rename to modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactory.java
index 95a350d..22dd9ce 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessageFactory.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactory.java
@@ -1,6 +1,23 @@
-package org.apache.ignite.raft.client.message;
-
-import org.apache.ignite.raft.client.RaftClientMessages;
+/*
+ * 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.impl;
+
+import org.apache.ignite.raft.client.message.RaftClientMessages;
 
 /** */
 public interface RaftClientMessageFactory {
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessageFactoryImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactoryImpl.java
similarity index 76%
rename from modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessageFactoryImpl.java
rename to modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactoryImpl.java
index 6e170ae..9464368 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/RaftClientMessageFactoryImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RaftClientMessageFactoryImpl.java
@@ -1,6 +1,23 @@
-package org.apache.ignite.raft.client.message;
+/*
+ * 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.impl;
 
-import org.apache.ignite.raft.client.RaftClientMessages;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
 
 /**
  * Raft client message factory.
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
new file mode 100644
index 0000000..f063e46
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemoveLearnersRequestImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class RemoveLearnersRequestImpl implements RaftClientMessages.RemoveLearnersRequest, RaftClientMessages.RemoveLearnersRequest.Builder {
+    private String groupId;
+
+    private List<PeerId> learnersList = new ArrayList<>();
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public List<PeerId> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder addLearners(PeerId learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..30d3d18
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerRequestImpl.java
@@ -0,0 +1,51 @@
+/*
+ * 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.impl;
+
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class RemovePeerRequestImpl implements RaftClientMessages.RemovePeerRequest, RaftClientMessages.RemovePeerRequest.Builder {
+    private String groupId;
+
+    private PeerId peerId;
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public PeerId getPeerId() {
+        return peerId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(PeerId peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..819d8ec
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/RemovePeerResponseImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class RemovePeerResponseImpl implements RaftClientMessages.RemovePeerResponse, RaftClientMessages.RemovePeerResponse.Builder {
+    private List<PeerId> oldPeersList = new ArrayList<>();
+
+    private List<PeerId> newPeersList = new ArrayList<>();
+
+    @Override public List<PeerId> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public List<PeerId> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public Builder addOldPeers(PeerId oldPeerId) {
+        oldPeersList.add(oldPeerId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(PeerId newPeerId) {
+        newPeersList.add(newPeerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..1371b00
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetLearnersRequestImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class ResetLearnersRequestImpl implements RaftClientMessages.ResetLearnersRequest, RaftClientMessages.ResetLearnersRequest.Builder {
+    private String groupId;
+
+    private List<PeerId> learnersList = new ArrayList<>();
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public List<PeerId> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder addLearners(PeerId learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..fba3dea
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/ResetPeerRequestImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class ResetPeerRequestImpl implements RaftClientMessages.ResetPeerRequest, RaftClientMessages.ResetPeerRequest.Builder {
+    private String groupId;
+
+    private List<PeerId> newPeersList = new ArrayList<>();
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public List<PeerId> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(PeerId peerId) {
+        newPeersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.ResetPeerRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/SnapshotRequestImpl.java
similarity index 55%
copy from modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
copy to modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/SnapshotRequestImpl.java
index 5001d74..69b3ac8 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/SnapshotRequestImpl.java
@@ -6,7 +6,7 @@
  * (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
+ *      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,
@@ -14,18 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ignite.raft;
 
-import java.util.List;
-import org.jetbrains.annotations.Nullable;
+package org.apache.ignite.raft.client.message.impl;
 
-/**
- * Raft group state.
- */
-public interface State  {
-    @Nullable PeerId leader();
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class SnapshotRequestImpl implements RaftClientMessages.SnapshotRequest, RaftClientMessages.SnapshotRequest.Builder {
+    private String groupId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
 
-    @Nullable List<PeerId> peers();
+        return this;
+    }
 
-    @Nullable List<PeerId> learners();
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..3cc7e98
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/TransferLeaderRequestImpl.java
@@ -0,0 +1,45 @@
+/*
+ * 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.impl;
+
+import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+class TransferLeaderRequestImpl implements RaftClientMessages.TransferLeaderRequest, RaftClientMessages.TransferLeaderRequest.Builder {
+    private String groupId;
+
+    private PeerId peerId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public PeerId getPeerId() {
+        return peerId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.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
new file mode 100644
index 0000000..e933c24
--- /dev/null
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserRequestImpl.java
@@ -0,0 +1,50 @@
+/*
+ * 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.impl;
+
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+public class UserRequestImpl<T> implements RaftClientMessages.UserRequest, RaftClientMessages.UserRequest.Builder {
+    private Object request;
+
+    private String groupId;
+
+    @Override public Object request() {
+        return request;
+    }
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setRequest(Object request) {
+        this.request = request;
+
+        return this;
+    }
+
+    @Override public RaftClientMessages.UserRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserResponseImpl.java
similarity index 56%
copy from modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
copy to modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserResponseImpl.java
index 5001d74..8c1a530 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/State.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/message/impl/UserResponseImpl.java
@@ -6,7 +6,7 @@
  * (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
+ *      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,
@@ -14,18 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ignite.raft;
 
-import java.util.List;
-import org.jetbrains.annotations.Nullable;
+package org.apache.ignite.raft.client.message.impl;
 
-/**
- * Raft group state.
- */
-public interface State  {
-    @Nullable PeerId leader();
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+
+public class UserResponseImpl<T> implements RaftClientMessages.UserResponse<T>, RaftClientMessages.UserResponse.Builder<T> {
+    private T response;
+
+    @Override public T response() {
+        return response;
+    }
+
+    @Override public Builder setResponse(T response) {
+        this.response = response;
 
-    @Nullable List<PeerId> peers();
+        return this;
+    }
 
-    @Nullable List<PeerId> learners();
+    @Override public RaftClientMessages.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 382e953..d6b863a 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
@@ -14,29 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.ignite.raft.client.rpc;
 
 import java.util.concurrent.CompletableFuture;
 import javax.validation.constraints.NotNull;
 import org.apache.ignite.raft.State;
 import org.apache.ignite.raft.PeerId;
-import org.apache.ignite.raft.client.RaftClientMessages.UserRequest;
-import org.apache.ignite.raft.client.RaftClientMessages.UserResponse;
-import org.apache.ignite.raft.client.message.RaftClientMessageFactory;
-
-import static org.apache.ignite.raft.client.RaftClientMessages.AddLearnersRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.AddPeerRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.AddPeerResponse;
-import static org.apache.ignite.raft.client.RaftClientMessages.ChangePeersRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.ChangePeersResponse;
-import static org.apache.ignite.raft.client.RaftClientMessages.LearnersOpResponse;
-import static org.apache.ignite.raft.client.RaftClientMessages.RemoveLearnersRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.RemovePeerRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.RemovePeerResponse;
-import static org.apache.ignite.raft.client.RaftClientMessages.ResetLearnersRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.ResetPeerRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.SnapshotRequest;
-import static org.apache.ignite.raft.client.RaftClientMessages.TransferLeaderRequest;
+import org.apache.ignite.raft.client.message.RaftClientMessages.UserRequest;
+import org.apache.ignite.raft.client.message.RaftClientMessages.UserResponse;
+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;
 
 /**
  * Replicating 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 4f46ed9..ac9cb5c 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
@@ -1,3 +1,20 @@
+/*
+ * 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.rpc.impl;
 
 import java.util.HashSet;
@@ -10,15 +27,16 @@ import org.apache.ignite.network.NetworkCluster;
 import org.apache.ignite.network.NetworkMember;
 import org.apache.ignite.raft.PeerId;
 import org.apache.ignite.raft.State;
-import org.apache.ignite.raft.client.RaftClientMessages;
-import org.apache.ignite.raft.client.RaftClientMessages.GetLeaderResponse;
-import org.apache.ignite.raft.client.message.RaftClientMessageFactory;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
+import org.apache.ignite.raft.client.message.RaftClientMessages.GetLeaderResponse;
+import org.apache.ignite.raft.client.message.impl.RaftClientMessageFactory;
 import org.apache.ignite.raft.client.rpc.RaftGroupRpcClient;
 import org.jetbrains.annotations.Nullable;
 
 import static java.util.concurrent.CompletableFuture.completedFuture;
 
 public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
+    /** */
     private final NetworkCluster cluster;
 
     /** Where to ask for initial configuration. */
@@ -30,11 +48,12 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
     /** */
     private final int defaultTimeout;
 
-    private Map<String, StateImpl> states = new ConcurrentHashMap<>();
+    /** */
+    private final Map<String, StateImpl> states = new ConcurrentHashMap<>();
 
     /**
-     * Accepts dependencies in constructor.
      * @param cluster Cluster.
+     * @param factory Factory.
      * @param defaultTimeout Default request timeout.
      * @param initialCfgNode Initial configuration nodes.
      */
@@ -119,6 +138,7 @@ public class RaftGroupRpcClientImpl implements RaftGroupRpcClient {
         return this.factory;
     }
 
+    /** */
     private static class StateImpl implements State {
         private volatile PeerId leader;
 
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 c007086..1fc7a89 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
@@ -1,3 +1,20 @@
+/*
+ * 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.service;
 
 import java.util.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 a4a8a59..1d1eccc 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
@@ -1,3 +1,20 @@
+/*
+ * 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.service;
 
 import java.util.concurrent.CompletableFuture;
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupManagmentService.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupManagmentService.java
index 2bd8fac..455173d 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupManagmentService.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/RaftGroupManagmentService.java
@@ -1,3 +1,20 @@
+/*
+ * 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.service;
 
 import java.util.List;
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 c5b7c25..35a72e5 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
@@ -1,12 +1,30 @@
+/*
+ * 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.service.impl;
 
 import java.util.concurrent.CompletableFuture;
-import org.apache.ignite.raft.client.RaftClientMessages;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
 import org.apache.ignite.raft.client.rpc.RaftGroupRpcClient;
 import org.apache.ignite.raft.client.service.RaftGroupClientRequestService;
 
 public class RaftGroupClientRequestServiceImpl implements RaftGroupClientRequestService {
     private final RaftGroupRpcClient rpcClient;
+
     private final String groupId;
 
     public RaftGroupClientRequestServiceImpl(RaftGroupRpcClient rpcClient, String groupId) {
diff --git a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupManagementServiceImpl.java b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupManagementServiceImpl.java
index 28e28c8..383044a 100644
--- a/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupManagementServiceImpl.java
+++ b/modules/raft-client/src/main/java/org/apache/ignite/raft/client/service/impl/RaftGroupManagementServiceImpl.java
@@ -1,3 +1,20 @@
+/*
+ * 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.service.impl;
 
 import java.util.List;
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 9edc931..9de90dc 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
@@ -1,3 +1,20 @@
+/*
+ * 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;
 
 import java.util.concurrent.CompletableFuture;
@@ -5,12 +22,13 @@ import java.util.concurrent.TimeoutException;
 import org.apache.ignite.network.NetworkCluster;
 import org.apache.ignite.network.NetworkMember;
 import org.apache.ignite.raft.PeerId;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
-import static org.apache.ignite.raft.client.message.RaftClientMessageFactoryImpl.INSTANCE;
+import static org.apache.ignite.raft.client.message.impl.RaftClientMessageFactoryImpl.INSTANCE;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.argThat;
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 8ab61e3..e7fe41e 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
@@ -1,3 +1,20 @@
+/*
+ * 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.rpc;
 
 import java.util.concurrent.CountDownLatch;
@@ -9,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.RaftClientMessages;
+import org.apache.ignite.raft.client.message.RaftClientMessages;
 import org.apache.ignite.raft.client.rpc.impl.RaftGroupRpcClientImpl;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -21,7 +38,7 @@ import static org.apache.ignite.raft.client.MockUtils.LEADER;
 import static org.apache.ignite.raft.client.MockUtils.mockLeaderRequest;
 import static org.apache.ignite.raft.client.MockUtils.mockUserInput1;
 import static org.apache.ignite.raft.client.MockUtils.mockUserInput2;
-import static org.apache.ignite.raft.client.message.RaftClientMessageFactoryImpl.INSTANCE;
+import static org.apache.ignite.raft.client.message.impl.RaftClientMessageFactoryImpl.INSTANCE;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
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 1c802a0..4aaa2a6 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
@@ -1,3 +1,20 @@
+/*
+ * 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.service;
 
 import java.util.concurrent.CompletableFuture;
@@ -19,7 +36,7 @@ import static org.apache.ignite.raft.client.MockUtils.LEADER;
 import static org.apache.ignite.raft.client.MockUtils.mockLeaderRequest;
 import static org.apache.ignite.raft.client.MockUtils.mockUserInput1;
 import static org.apache.ignite.raft.client.MockUtils.mockUserInput2;
-import static org.apache.ignite.raft.client.message.RaftClientMessageFactoryImpl.INSTANCE;
+import static org.apache.ignite.raft.client.message.impl.RaftClientMessageFactoryImpl.INSTANCE;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;