Move remoting to independent project
diff --git a/README.md b/README.md
index 6d4c603..ce38c79 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
-## Apache RocketMQ X
+## Remoting
 
-Apache RocketMQ X is the next generation of RocketMQ, which is extremely simple and high available.
\ No newline at end of file
+Remoting provides a single API for most network related service that uses pluggable transports and codecs. The Angelia API provides the ability for making synchronous, asynchronous, oneway remote calls, push and pull callbacks. The intention is to allow for the use of different transports to fit different needs, yet still maintain the same API for making the remote invocations and only requiring configuration changes, not code changes.
\ No newline at end of file
diff --git a/remoting-core/remoting-api/pom.xml b/api/pom.xml
similarity index 94%
rename from remoting-core/remoting-api/pom.xml
rename to api/pom.xml
index 19e7abb..e8ae1c8 100644
--- a/remoting-core/remoting-api/pom.xml
+++ b/api/pom.xml
@@ -6,7 +6,7 @@
         <artifactId>rocketmq-x</artifactId>
         <groupId>org.apache.rocketmq</groupId>
         <version>0.1.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/AsyncHandler.java b/api/src/main/java/org/apache/rocketmq/remoting/api/AsyncHandler.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/AsyncHandler.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/AsyncHandler.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/ConnectionService.java b/api/src/main/java/org/apache/rocketmq/remoting/api/ConnectionService.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/ConnectionService.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/ConnectionService.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/ObjectLifecycle.java b/api/src/main/java/org/apache/rocketmq/remoting/api/ObjectLifecycle.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/ObjectLifecycle.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/ObjectLifecycle.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingClient.java b/api/src/main/java/org/apache/rocketmq/remoting/api/RemotingClient.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingClient.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/RemotingClient.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingEndPoint.java b/api/src/main/java/org/apache/rocketmq/remoting/api/RemotingEndPoint.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingEndPoint.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/RemotingEndPoint.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingServer.java b/api/src/main/java/org/apache/rocketmq/remoting/api/RemotingServer.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingServer.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/RemotingServer.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingService.java b/api/src/main/java/org/apache/rocketmq/remoting/api/RemotingService.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RemotingService.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/RemotingService.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RequestProcessor.java b/api/src/main/java/org/apache/rocketmq/remoting/api/RequestProcessor.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/RequestProcessor.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/RequestProcessor.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/buffer/RemotingBuffer.java b/api/src/main/java/org/apache/rocketmq/remoting/api/buffer/RemotingBuffer.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/buffer/RemotingBuffer.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/buffer/RemotingBuffer.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChannelEventListener.java b/api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChannelEventListener.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChannelEventListener.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChannelEventListener.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChunkRegion.java b/api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChunkRegion.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChunkRegion.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/channel/ChunkRegion.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/channel/RemotingChannel.java b/api/src/main/java/org/apache/rocketmq/remoting/api/channel/RemotingChannel.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/channel/RemotingChannel.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/channel/RemotingChannel.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommand.java b/api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommand.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommand.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommand.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommandFactory.java b/api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommandFactory.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommandFactory.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/command/RemotingCommandFactory.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/command/TrafficType.java b/api/src/main/java/org/apache/rocketmq/remoting/api/command/TrafficType.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/command/TrafficType.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/command/TrafficType.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingAccessException.java b/api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingAccessException.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingAccessException.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingAccessException.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingCodecException.java b/api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingCodecException.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingCodecException.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingCodecException.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingConnectFailureException.java b/api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingConnectFailureException.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingConnectFailureException.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingConnectFailureException.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingRuntimeException.java b/api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingRuntimeException.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingRuntimeException.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingRuntimeException.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingTimeoutException.java b/api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingTimeoutException.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingTimeoutException.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/exception/RemotingTimeoutException.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/SemaphoreExhaustedException.java b/api/src/main/java/org/apache/rocketmq/remoting/api/exception/SemaphoreExhaustedException.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/exception/SemaphoreExhaustedException.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/exception/SemaphoreExhaustedException.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/Interceptor.java b/api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/Interceptor.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/Interceptor.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/Interceptor.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/InterceptorGroup.java b/api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/InterceptorGroup.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/InterceptorGroup.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/InterceptorGroup.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/RequestContext.java b/api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/RequestContext.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/RequestContext.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/RequestContext.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/ResponseContext.java b/api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/ResponseContext.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/ResponseContext.java
rename to api/src/main/java/org/apache/rocketmq/remoting/api/interceptor/ResponseContext.java
diff --git a/remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/common/Pair.java b/api/src/main/java/org/apache/rocketmq/remoting/common/Pair.java
similarity index 100%
rename from remoting-core/remoting-api/src/main/java/org/apache/rocketmq/remoting/common/Pair.java
rename to api/src/main/java/org/apache/rocketmq/remoting/common/Pair.java
diff --git a/benchmarks/remoting-benchmark/pom.xml b/benchmark/pom.xml
similarity index 92%
rename from benchmarks/remoting-benchmark/pom.xml
rename to benchmark/pom.xml
index baf3973..7cdf727 100644
--- a/benchmarks/remoting-benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
         <artifactId>rocketmq-x</artifactId>
         <groupId>org.apache.rocketmq</groupId>
         <version>0.1.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/benchmarks/remoting-benchmark/src/main/java/org/apache/rocketmq/benchmarks/remoting/AbstractBenchmark.java b/benchmark/src/main/java/org/apache/rocketmq/benchmarks/remoting/AbstractBenchmark.java
similarity index 100%
rename from benchmarks/remoting-benchmark/src/main/java/org/apache/rocketmq/benchmarks/remoting/AbstractBenchmark.java
rename to benchmark/src/main/java/org/apache/rocketmq/benchmarks/remoting/AbstractBenchmark.java
diff --git a/remoting-core/remoting-impl/pom.xml b/impl/pom.xml
similarity index 96%
rename from remoting-core/remoting-impl/pom.xml
rename to impl/pom.xml
index 83915fd..bf66aaa 100644
--- a/remoting-core/remoting-impl/pom.xml
+++ b/impl/pom.xml
@@ -6,7 +6,7 @@
         <artifactId>rocketmq-x</artifactId>
         <groupId>org.apache.rocketmq</groupId>
         <version>0.1.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/RemotingBootstrapFactory.java b/impl/src/main/java/org/apache/rocketmq/remoting/RemotingBootstrapFactory.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/RemotingBootstrapFactory.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/RemotingBootstrapFactory.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/common/ChannelEventListenerGroup.java b/impl/src/main/java/org/apache/rocketmq/remoting/common/ChannelEventListenerGroup.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/common/ChannelEventListenerGroup.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/common/ChannelEventListenerGroup.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/common/ResponseFuture.java b/impl/src/main/java/org/apache/rocketmq/remoting/common/ResponseFuture.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/common/ResponseFuture.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/common/ResponseFuture.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java b/impl/src/main/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingClientConfig.java b/impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingClientConfig.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingClientConfig.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingClientConfig.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingConfig.java b/impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingConfig.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingConfig.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingConfig.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingServerConfig.java b/impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingServerConfig.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingServerConfig.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/config/RemotingServerConfig.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/TcpSocketConfig.java b/impl/src/main/java/org/apache/rocketmq/remoting/config/TcpSocketConfig.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/config/TcpSocketConfig.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/config/TcpSocketConfig.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/external/ThreadUtils.java b/impl/src/main/java/org/apache/rocketmq/remoting/external/ThreadUtils.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/external/ThreadUtils.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/external/ThreadUtils.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/buffer/NettyRemotingBuffer.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/buffer/NettyRemotingBuffer.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/buffer/NettyRemotingBuffer.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/buffer/NettyRemotingBuffer.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/channel/NettyChannelImpl.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/channel/NettyChannelImpl.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/channel/NettyChannelImpl.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/channel/NettyChannelImpl.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/CodecHelper.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/command/CodecHelper.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/CodecHelper.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/command/CodecHelper.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImpl.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImpl.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImpl.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImpl.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingSysResponseCode.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingSysResponseCode.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingSysResponseCode.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingSysResponseCode.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RequestIdGenerator.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RequestIdGenerator.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RequestIdGenerator.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RequestIdGenerator.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManager.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManager.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManager.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManager.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEvent.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEvent.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEvent.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEvent.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEventType.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEventType.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEventType.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyChannelEventType.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstract.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstract.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstract.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstract.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClient.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClient.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClient.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClient.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingServer.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingServer.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingServer.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingServer.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Decoder.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Decoder.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Decoder.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Decoder.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Encoder.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Encoder.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Encoder.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/Encoder.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandler.java b/impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandler.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandler.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandler.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/BeanUtils.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/BeanUtils.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/BeanUtils.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/BeanUtils.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/ByteUtils.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/ByteUtils.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/ByteUtils.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/ByteUtils.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/ExceptionUtils.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/ExceptionUtils.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/ExceptionUtils.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/ExceptionUtils.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/JvmUtils.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/JvmUtils.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/JvmUtils.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/JvmUtils.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/NetworkUtils.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/NetworkUtils.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/NetworkUtils.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/NetworkUtils.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/PropertyUtils.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/PropertyUtils.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/PropertyUtils.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/PropertyUtils.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/RemotingUtil.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/RemotingUtil.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/RemotingUtil.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/RemotingUtil.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/UIDGenerator.java b/impl/src/main/java/org/apache/rocketmq/remoting/internal/UIDGenerator.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/internal/UIDGenerator.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/internal/UIDGenerator.java
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/package-info.java b/impl/src/main/java/org/apache/rocketmq/remoting/package-info.java
similarity index 100%
rename from remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/package-info.java
rename to impl/src/main/java/org/apache/rocketmq/remoting/package-info.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/common/ResponseFutureTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/common/ResponseFutureTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/common/ResponseFutureTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/common/ResponseFutureTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnceTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnceTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnceTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/common/SemaphoreReleaseOnlyOnceTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/command/CodecHelperTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/command/CodecHelperTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/command/CodecHelperTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/command/CodecHelperTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImplTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImplTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImplTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandFactoryImplTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RequestIdGeneratorTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RequestIdGeneratorTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RequestIdGeneratorTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/command/RequestIdGeneratorTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManagerTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManagerTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManagerTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/ClientChannelManagerTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstractTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstractTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstractTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstractTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClientTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClientTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClientTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingClientTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/DecoderTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/DecoderTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/DecoderTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/DecoderTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/EncoderTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/EncoderTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/EncoderTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/EncoderTest.java
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandlerTest.java b/impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandlerTest.java
similarity index 100%
rename from remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandlerTest.java
rename to impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/handler/ExceptionHandlerTest.java
diff --git a/pom.xml b/pom.xml
index 6682c35..c21846a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,9 +33,9 @@
     </properties>
 
     <modules>
-        <module>remoting-core/remoting-api</module>
-        <module>remoting-core/remoting-impl</module>
-        <module>benchmarks/remoting-benchmark</module>
+        <module>api</module>
+        <module>impl</module>
+        <module>benchmark</module>
     </modules>
 
     <dependencies>