Create some packages then move classes
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
index 2d596e2..378cf75 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
@@ -20,6 +20,13 @@
 import com.google.inject.AbstractModule;
 import com.google.inject.assistedinject.FactoryModuleBuilder;
 
+import com.googlesource.gerrit.plugins.rabbitmq.config.AMQProperties;
+import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
+import com.googlesource.gerrit.plugins.rabbitmq.message.DefaultMessagePublisher;
+import com.googlesource.gerrit.plugins.rabbitmq.message.MessagePublisher;
+import com.googlesource.gerrit.plugins.rabbitmq.session.AMQPSession;
+import com.googlesource.gerrit.plugins.rabbitmq.solver.BCSolver;
+
 class Module extends AbstractModule {
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/PropertiesStore.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/PropertiesStore.java
index 75cd4fc..0073a95 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/PropertiesStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/PropertiesStore.java
@@ -19,6 +19,8 @@
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
+import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java
index 5aa6966..195c5ef 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java
@@ -18,6 +18,12 @@
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
+import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
+import com.googlesource.gerrit.plugins.rabbitmq.message.DefaultMessagePublisher;
+import com.googlesource.gerrit.plugins.rabbitmq.message.MessagePublisher;
+import com.googlesource.gerrit.plugins.rabbitmq.session.AMQPSession;
+import com.googlesource.gerrit.plugins.rabbitmq.solver.BCSolver;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/AMQProperties.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/AMQProperties.java
similarity index 94%
rename from src/main/java/com/googlesource/gerrit/plugins/rabbitmq/AMQProperties.java
rename to src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/AMQProperties.java
index 4c8f7c2..b369a19 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/AMQProperties.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/AMQProperties.java
@@ -12,11 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.rabbitmq;
+package com.googlesource.gerrit.plugins.rabbitmq.config;
 
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 
+import com.googlesource.gerrit.plugins.rabbitmq.Keys;
 import com.rabbitmq.client.AMQP;
 
 import org.apache.commons.codec.CharEncoding;
@@ -28,7 +29,7 @@
 
 public class AMQProperties {
 
-  interface Factory {
+  public interface Factory {
     AMQProperties create(Properties properties);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Properties.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
similarity index 96%
rename from src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Properties.java
rename to src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
index 0e0bd12..83121b6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Properties.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
@@ -12,13 +12,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.rabbitmq;
+package com.googlesource.gerrit.plugins.rabbitmq.config;
 
 import com.google.gerrit.common.Version;
 import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 
+import com.googlesource.gerrit.plugins.rabbitmq.Keys;
+
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.jgit.errors.ConfigInvalidException;
@@ -34,7 +36,7 @@
 
 public class Properties {
 
-  interface Factory {
+  public interface Factory {
     Properties create(Path propertiesFile);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/DefaultMessagePublisher.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/DefaultMessagePublisher.java
similarity index 93%
rename from src/main/java/com/googlesource/gerrit/plugins/rabbitmq/DefaultMessagePublisher.java
rename to src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/DefaultMessagePublisher.java
index fb93634..b4e528a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/DefaultMessagePublisher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/DefaultMessagePublisher.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.rabbitmq;
+package com.googlesource.gerrit.plugins.rabbitmq.message;
 
 import com.google.gerrit.common.ChangeListener;
 import com.google.gerrit.extensions.events.LifecycleListener;
@@ -21,6 +21,9 @@
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
+import com.googlesource.gerrit.plugins.rabbitmq.Keys;
+import com.googlesource.gerrit.plugins.rabbitmq.session.AMQPSession;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/MessagePublisher.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
similarity index 96%
rename from src/main/java/com/googlesource/gerrit/plugins/rabbitmq/MessagePublisher.java
rename to src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
index 1be39a8..010b5e2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/MessagePublisher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.rabbitmq;
+package com.googlesource.gerrit.plugins.rabbitmq.message;
 
 import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.common.ChangeListener;
@@ -35,6 +35,9 @@
 import com.google.inject.ProvisionException;
 import com.google.inject.assistedinject.Assisted;
 
+import com.googlesource.gerrit.plugins.rabbitmq.Keys;
+import com.googlesource.gerrit.plugins.rabbitmq.session.AMQPSession;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,7 +46,7 @@
 
 public class MessagePublisher implements ChangeListener, LifecycleListener {
 
-  interface Factory {
+  public interface Factory {
     MessagePublisher create(AMQPSession session);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/AMQPSession.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/AMQPSession.java
similarity index 95%
rename from src/main/java/com/googlesource/gerrit/plugins/rabbitmq/AMQPSession.java
rename to src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/AMQPSession.java
index 7b81f0e..d6c5900 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/AMQPSession.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/AMQPSession.java
@@ -12,12 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.rabbitmq;
+package com.googlesource.gerrit.plugins.rabbitmq.session;
 
 import com.google.inject.Inject;
-
 import com.google.inject.assistedinject.Assisted;
 
+import com.googlesource.gerrit.plugins.rabbitmq.Keys;
+import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
 // import com.rabbitmq.client.AMQP.BasicProperties;
 import com.rabbitmq.client.Channel;
 import com.rabbitmq.client.Connection;
@@ -37,7 +38,7 @@
 
 public class AMQPSession implements ShutdownListener {
 
-  interface Factory {
+  public interface Factory {
     AMQPSession create(Properties properties);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/BCSolver.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/BCSolver.java
similarity index 96%
rename from src/main/java/com/googlesource/gerrit/plugins/rabbitmq/BCSolver.java
rename to src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/BCSolver.java
index 84cf2cc..281f6e2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/BCSolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/BCSolver.java
@@ -11,7 +11,7 @@
 // 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 com.googlesource.gerrit.plugins.rabbitmq;
+package com.googlesource.gerrit.plugins.rabbitmq.solver;
 
 import static com.googlesource.gerrit.plugins.rabbitmq.PropertiesStore.FILE_EXT;
 import static com.googlesource.gerrit.plugins.rabbitmq.PropertiesStore.SITE_DIR;
@@ -57,7 +57,7 @@
    * new : data/rabbitmq/rabbitmq.config
    *       data/rabbitmq/site/default.config
    */
-  void solve() {
+  public void solve() {
     try {
       Path oldFile = etcDir.resolve(pluginName + FILE_EXT);
       Path newFile = pluginDataDir.resolve(pluginName + FILE_EXT);