GOSSIP-78 refactor into a multi-module maven project

* add *.ipr to .gitignore
* modify existing pom to be a parent. create new pom for gossip-core.
* I left all properties and dependencies in the parent, as they seemed to be a fairly general set of dependencies.
move all the code.
* rename parent module: gossip -> gossip-parent
* move dependencies into child module
diff --git a/.gitignore b/.gitignore
index fc368f3..fab2364 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
 .idea/
 *.iml
 *.iws
+*.ipr
 
 # Mac
 .DS_Store
diff --git a/gossip-base/pom.xml b/gossip-base/pom.xml
new file mode 100644
index 0000000..3529bd1
--- /dev/null
+++ b/gossip-base/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.gossip</groupId>
+    <artifactId>gossip-parent</artifactId>
+    <version>0.1.3-incubating-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+  
+  <name>Gossip Base</name>
+  <artifactId>gossip-base</artifactId>
+  <version>0.1.3-incubating-SNAPSHOT</version>
+  
+  <dependencies>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+			<version>${jackson.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-math</groupId>
+			<artifactId>commons-math</artifactId>
+			<version>${commons-math.version}</version>
+		</dependency> 
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>${jackson.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>io.dropwizard.metrics</groupId>
+			<artifactId>metrics-core</artifactId>
+			<version>${metrics.version}</version></dependency>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-api</artifactId>
+			<version>${junit.jupiter.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-engine</artifactId>
+			<version>${junit.jupiter.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.vintage</groupId>
+			<artifactId>junit-vintage-engine</artifactId>
+			<version>${junit.vintage.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.platform</groupId>
+			<artifactId>junit-platform-runner</artifactId>
+			<version>${junit.platform.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>io.teknek</groupId>
+			<artifactId>tunit</artifactId>
+			<version>${tunit.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>${log4j.version}</version>
+			<type>jar</type>
+			<scope>compile</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>javax.jms</groupId>
+					<artifactId>jms</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>com.sun.jdmk</groupId>
+					<artifactId>jmxtools</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>com.sun.jmx</groupId>
+					<artifactId>jmxri</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+	</dependencies>
+	
+</project>
\ No newline at end of file
diff --git a/src/main/java/org/apache/gossip/GossipSettings.java b/gossip-base/src/main/java/org/apache/gossip/GossipSettings.java
similarity index 100%
rename from src/main/java/org/apache/gossip/GossipSettings.java
rename to gossip-base/src/main/java/org/apache/gossip/GossipSettings.java
diff --git a/src/main/java/org/apache/gossip/LocalMember.java b/gossip-base/src/main/java/org/apache/gossip/LocalMember.java
similarity index 100%
rename from src/main/java/org/apache/gossip/LocalMember.java
rename to gossip-base/src/main/java/org/apache/gossip/LocalMember.java
diff --git a/src/main/java/org/apache/gossip/Member.java b/gossip-base/src/main/java/org/apache/gossip/Member.java
similarity index 100%
rename from src/main/java/org/apache/gossip/Member.java
rename to gossip-base/src/main/java/org/apache/gossip/Member.java
diff --git a/src/main/java/org/apache/gossip/RemoteMember.java b/gossip-base/src/main/java/org/apache/gossip/RemoteMember.java
similarity index 100%
rename from src/main/java/org/apache/gossip/RemoteMember.java
rename to gossip-base/src/main/java/org/apache/gossip/RemoteMember.java
diff --git a/src/main/java/org/apache/gossip/StartupSettings.java b/gossip-base/src/main/java/org/apache/gossip/StartupSettings.java
similarity index 100%
rename from src/main/java/org/apache/gossip/StartupSettings.java
rename to gossip-base/src/main/java/org/apache/gossip/StartupSettings.java
diff --git a/src/main/java/org/apache/gossip/accrual/FailureDetector.java b/gossip-base/src/main/java/org/apache/gossip/accrual/FailureDetector.java
similarity index 100%
rename from src/main/java/org/apache/gossip/accrual/FailureDetector.java
rename to gossip-base/src/main/java/org/apache/gossip/accrual/FailureDetector.java
diff --git a/src/main/java/org/apache/gossip/crdt/Crdt.java b/gossip-base/src/main/java/org/apache/gossip/crdt/Crdt.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/Crdt.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/Crdt.java
diff --git a/src/main/java/org/apache/gossip/crdt/CrdtBiFunctionMerge.java b/gossip-base/src/main/java/org/apache/gossip/crdt/CrdtBiFunctionMerge.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/CrdtBiFunctionMerge.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/CrdtBiFunctionMerge.java
diff --git a/src/main/java/org/apache/gossip/crdt/CrdtCounter.java b/gossip-base/src/main/java/org/apache/gossip/crdt/CrdtCounter.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/CrdtCounter.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/CrdtCounter.java
diff --git a/src/main/java/org/apache/gossip/crdt/CrdtModule.java b/gossip-base/src/main/java/org/apache/gossip/crdt/CrdtModule.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/CrdtModule.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/CrdtModule.java
diff --git a/src/main/java/org/apache/gossip/crdt/CrdtSet.java b/gossip-base/src/main/java/org/apache/gossip/crdt/CrdtSet.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/CrdtSet.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/CrdtSet.java
diff --git a/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java b/gossip-base/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java
diff --git a/src/main/java/org/apache/gossip/crdt/GrowOnlySet.java b/gossip-base/src/main/java/org/apache/gossip/crdt/GrowOnlySet.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/GrowOnlySet.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/GrowOnlySet.java
diff --git a/src/main/java/org/apache/gossip/crdt/OrSet.java b/gossip-base/src/main/java/org/apache/gossip/crdt/OrSet.java
similarity index 100%
rename from src/main/java/org/apache/gossip/crdt/OrSet.java
rename to gossip-base/src/main/java/org/apache/gossip/crdt/OrSet.java
diff --git a/src/main/java/org/apache/gossip/event/GossipListener.java b/gossip-base/src/main/java/org/apache/gossip/event/GossipListener.java
similarity index 100%
rename from src/main/java/org/apache/gossip/event/GossipListener.java
rename to gossip-base/src/main/java/org/apache/gossip/event/GossipListener.java
diff --git a/src/main/java/org/apache/gossip/event/GossipState.java b/gossip-base/src/main/java/org/apache/gossip/event/GossipState.java
similarity index 100%
rename from src/main/java/org/apache/gossip/event/GossipState.java
rename to gossip-base/src/main/java/org/apache/gossip/event/GossipState.java
diff --git a/src/main/java/org/apache/gossip/examples/StandAloneDatacenterAndRack.java b/gossip-base/src/main/java/org/apache/gossip/examples/StandAloneDatacenterAndRack.java
similarity index 100%
rename from src/main/java/org/apache/gossip/examples/StandAloneDatacenterAndRack.java
rename to gossip-base/src/main/java/org/apache/gossip/examples/StandAloneDatacenterAndRack.java
diff --git a/src/main/java/org/apache/gossip/examples/StandAloneNode.java b/gossip-base/src/main/java/org/apache/gossip/examples/StandAloneNode.java
similarity index 100%
rename from src/main/java/org/apache/gossip/examples/StandAloneNode.java
rename to gossip-base/src/main/java/org/apache/gossip/examples/StandAloneNode.java
diff --git a/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java b/gossip-base/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java
similarity index 100%
rename from src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java
rename to gossip-base/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java
diff --git a/src/main/java/org/apache/gossip/manager/AbstractActiveGossiper.java b/gossip-base/src/main/java/org/apache/gossip/manager/AbstractActiveGossiper.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/AbstractActiveGossiper.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/AbstractActiveGossiper.java
diff --git a/src/main/java/org/apache/gossip/manager/Clock.java b/gossip-base/src/main/java/org/apache/gossip/manager/Clock.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/Clock.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/Clock.java
diff --git a/src/main/java/org/apache/gossip/manager/DataReaper.java b/gossip-base/src/main/java/org/apache/gossip/manager/DataReaper.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/DataReaper.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/DataReaper.java
diff --git a/src/main/java/org/apache/gossip/manager/DatacenterRackAwareActiveGossiper.java b/gossip-base/src/main/java/org/apache/gossip/manager/DatacenterRackAwareActiveGossiper.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/DatacenterRackAwareActiveGossiper.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/DatacenterRackAwareActiveGossiper.java
diff --git a/src/main/java/org/apache/gossip/manager/GossipCore.java b/gossip-base/src/main/java/org/apache/gossip/manager/GossipCore.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/GossipCore.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/GossipCore.java
diff --git a/src/main/java/org/apache/gossip/manager/GossipCoreConstants.java b/gossip-base/src/main/java/org/apache/gossip/manager/GossipCoreConstants.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/GossipCoreConstants.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/GossipCoreConstants.java
diff --git a/src/main/java/org/apache/gossip/manager/GossipManager.java b/gossip-base/src/main/java/org/apache/gossip/manager/GossipManager.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/GossipManager.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/GossipManager.java
diff --git a/src/main/java/org/apache/gossip/manager/GossipManagerBuilder.java b/gossip-base/src/main/java/org/apache/gossip/manager/GossipManagerBuilder.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/GossipManagerBuilder.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/GossipManagerBuilder.java
diff --git a/src/main/java/org/apache/gossip/manager/GossipMemberStateRefresher.java b/gossip-base/src/main/java/org/apache/gossip/manager/GossipMemberStateRefresher.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/GossipMemberStateRefresher.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/GossipMemberStateRefresher.java
diff --git a/src/main/java/org/apache/gossip/manager/PassiveGossipConstants.java b/gossip-base/src/main/java/org/apache/gossip/manager/PassiveGossipConstants.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/PassiveGossipConstants.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/PassiveGossipConstants.java
diff --git a/src/main/java/org/apache/gossip/manager/PassiveGossipThread.java b/gossip-base/src/main/java/org/apache/gossip/manager/PassiveGossipThread.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/PassiveGossipThread.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/PassiveGossipThread.java
diff --git a/src/main/java/org/apache/gossip/manager/RingStatePersister.java b/gossip-base/src/main/java/org/apache/gossip/manager/RingStatePersister.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/RingStatePersister.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/RingStatePersister.java
diff --git a/src/main/java/org/apache/gossip/manager/SimpleActiveGossipper.java b/gossip-base/src/main/java/org/apache/gossip/manager/SimpleActiveGossipper.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/SimpleActiveGossipper.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/SimpleActiveGossipper.java
diff --git a/src/main/java/org/apache/gossip/manager/SystemClock.java b/gossip-base/src/main/java/org/apache/gossip/manager/SystemClock.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/SystemClock.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/SystemClock.java
diff --git a/src/main/java/org/apache/gossip/manager/UserDataPersister.java b/gossip-base/src/main/java/org/apache/gossip/manager/UserDataPersister.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/UserDataPersister.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/UserDataPersister.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/ActiveGossipMessageHandler.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/ActiveGossipMessageHandler.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/ActiveGossipMessageHandler.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/ActiveGossipMessageHandler.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/DefaultMessageInvoker.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/DefaultMessageInvoker.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/DefaultMessageInvoker.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/DefaultMessageInvoker.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/MessageHandler.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/MessageHandler.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/MessageHandler.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/MessageHandler.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/PerNodeDataMessageHandler.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/PerNodeDataMessageHandler.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/PerNodeDataMessageHandler.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/PerNodeDataMessageHandler.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/SharedDataMessageHandler.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/SharedDataMessageHandler.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/SharedDataMessageHandler.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/SharedDataMessageHandler.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/ShutdownMessageHandler.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/ShutdownMessageHandler.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/ShutdownMessageHandler.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/ShutdownMessageHandler.java
diff --git a/src/main/java/org/apache/gossip/manager/handlers/SimpleMessageInvoker.java b/gossip-base/src/main/java/org/apache/gossip/manager/handlers/SimpleMessageInvoker.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/handlers/SimpleMessageInvoker.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/handlers/SimpleMessageInvoker.java
diff --git a/src/main/java/org/apache/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java b/gossip-base/src/main/java/org/apache/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java
similarity index 100%
rename from src/main/java/org/apache/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java
rename to gossip-base/src/main/java/org/apache/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java
diff --git a/src/main/java/org/apache/gossip/model/ActiveGossipMessage.java b/gossip-base/src/main/java/org/apache/gossip/model/ActiveGossipMessage.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/ActiveGossipMessage.java
rename to gossip-base/src/main/java/org/apache/gossip/model/ActiveGossipMessage.java
diff --git a/src/main/java/org/apache/gossip/model/ActiveGossipOk.java b/gossip-base/src/main/java/org/apache/gossip/model/ActiveGossipOk.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/ActiveGossipOk.java
rename to gossip-base/src/main/java/org/apache/gossip/model/ActiveGossipOk.java
diff --git a/src/main/java/org/apache/gossip/model/Base.java b/gossip-base/src/main/java/org/apache/gossip/model/Base.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/Base.java
rename to gossip-base/src/main/java/org/apache/gossip/model/Base.java
diff --git a/src/main/java/org/apache/gossip/model/Fault.java b/gossip-base/src/main/java/org/apache/gossip/model/Fault.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/Fault.java
rename to gossip-base/src/main/java/org/apache/gossip/model/Fault.java
diff --git a/src/main/java/org/apache/gossip/model/Member.java b/gossip-base/src/main/java/org/apache/gossip/model/Member.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/Member.java
rename to gossip-base/src/main/java/org/apache/gossip/model/Member.java
diff --git a/src/main/java/org/apache/gossip/model/Message.java b/gossip-base/src/main/java/org/apache/gossip/model/Message.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/Message.java
rename to gossip-base/src/main/java/org/apache/gossip/model/Message.java
diff --git a/src/main/java/org/apache/gossip/model/NotAMemberFault.java b/gossip-base/src/main/java/org/apache/gossip/model/NotAMemberFault.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/NotAMemberFault.java
rename to gossip-base/src/main/java/org/apache/gossip/model/NotAMemberFault.java
diff --git a/src/main/java/org/apache/gossip/model/PerNodeDataMessage.java b/gossip-base/src/main/java/org/apache/gossip/model/PerNodeDataMessage.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/PerNodeDataMessage.java
rename to gossip-base/src/main/java/org/apache/gossip/model/PerNodeDataMessage.java
diff --git a/src/main/java/org/apache/gossip/model/Response.java b/gossip-base/src/main/java/org/apache/gossip/model/Response.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/Response.java
rename to gossip-base/src/main/java/org/apache/gossip/model/Response.java
diff --git a/src/main/java/org/apache/gossip/model/SharedDataMessage.java b/gossip-base/src/main/java/org/apache/gossip/model/SharedDataMessage.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/SharedDataMessage.java
rename to gossip-base/src/main/java/org/apache/gossip/model/SharedDataMessage.java
diff --git a/src/main/java/org/apache/gossip/model/ShutdownMessage.java b/gossip-base/src/main/java/org/apache/gossip/model/ShutdownMessage.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/ShutdownMessage.java
rename to gossip-base/src/main/java/org/apache/gossip/model/ShutdownMessage.java
diff --git a/src/main/java/org/apache/gossip/model/SignedPayload.java b/gossip-base/src/main/java/org/apache/gossip/model/SignedPayload.java
similarity index 100%
rename from src/main/java/org/apache/gossip/model/SignedPayload.java
rename to gossip-base/src/main/java/org/apache/gossip/model/SignedPayload.java
diff --git a/src/main/java/org/apache/gossip/secure/KeyTool.java b/gossip-base/src/main/java/org/apache/gossip/secure/KeyTool.java
similarity index 100%
rename from src/main/java/org/apache/gossip/secure/KeyTool.java
rename to gossip-base/src/main/java/org/apache/gossip/secure/KeyTool.java
diff --git a/src/main/java/org/apache/gossip/udp/Trackable.java b/gossip-base/src/main/java/org/apache/gossip/udp/Trackable.java
similarity index 100%
rename from src/main/java/org/apache/gossip/udp/Trackable.java
rename to gossip-base/src/main/java/org/apache/gossip/udp/Trackable.java
diff --git a/src/main/java/org/apache/gossip/udp/UdpActiveGossipMessage.java b/gossip-base/src/main/java/org/apache/gossip/udp/UdpActiveGossipMessage.java
similarity index 100%
rename from src/main/java/org/apache/gossip/udp/UdpActiveGossipMessage.java
rename to gossip-base/src/main/java/org/apache/gossip/udp/UdpActiveGossipMessage.java
diff --git a/src/main/java/org/apache/gossip/udp/UdpActiveGossipOk.java b/gossip-base/src/main/java/org/apache/gossip/udp/UdpActiveGossipOk.java
similarity index 100%
rename from src/main/java/org/apache/gossip/udp/UdpActiveGossipOk.java
rename to gossip-base/src/main/java/org/apache/gossip/udp/UdpActiveGossipOk.java
diff --git a/src/main/java/org/apache/gossip/udp/UdpNotAMemberFault.java b/gossip-base/src/main/java/org/apache/gossip/udp/UdpNotAMemberFault.java
similarity index 100%
rename from src/main/java/org/apache/gossip/udp/UdpNotAMemberFault.java
rename to gossip-base/src/main/java/org/apache/gossip/udp/UdpNotAMemberFault.java
diff --git a/src/main/java/org/apache/gossip/udp/UdpPerNodeDataMessage.java b/gossip-base/src/main/java/org/apache/gossip/udp/UdpPerNodeDataMessage.java
similarity index 100%
rename from src/main/java/org/apache/gossip/udp/UdpPerNodeDataMessage.java
rename to gossip-base/src/main/java/org/apache/gossip/udp/UdpPerNodeDataMessage.java
diff --git a/src/main/java/org/apache/gossip/udp/UdpSharedDataMessage.java b/gossip-base/src/main/java/org/apache/gossip/udp/UdpSharedDataMessage.java
similarity index 100%
rename from src/main/java/org/apache/gossip/udp/UdpSharedDataMessage.java
rename to gossip-base/src/main/java/org/apache/gossip/udp/UdpSharedDataMessage.java
diff --git a/src/main/resources/log4j.properties b/gossip-base/src/main/resources/log4j.properties
similarity index 100%
rename from src/main/resources/log4j.properties
rename to gossip-base/src/main/resources/log4j.properties
diff --git a/src/test/java/org/apache/gossip/AbstractIntegrationBase.java b/gossip-base/src/test/java/org/apache/gossip/AbstractIntegrationBase.java
similarity index 100%
rename from src/test/java/org/apache/gossip/AbstractIntegrationBase.java
rename to gossip-base/src/test/java/org/apache/gossip/AbstractIntegrationBase.java
diff --git a/src/test/java/org/apache/gossip/DataTest.java b/gossip-base/src/test/java/org/apache/gossip/DataTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/DataTest.java
rename to gossip-base/src/test/java/org/apache/gossip/DataTest.java
diff --git a/src/test/java/org/apache/gossip/IdAndPropertyTest.java b/gossip-base/src/test/java/org/apache/gossip/IdAndPropertyTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/IdAndPropertyTest.java
rename to gossip-base/src/test/java/org/apache/gossip/IdAndPropertyTest.java
diff --git a/src/test/java/org/apache/gossip/MemberTest.java b/gossip-base/src/test/java/org/apache/gossip/MemberTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/MemberTest.java
rename to gossip-base/src/test/java/org/apache/gossip/MemberTest.java
diff --git a/src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java b/gossip-base/src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java
rename to gossip-base/src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java
diff --git a/src/test/java/org/apache/gossip/SignedMessageTest.java b/gossip-base/src/test/java/org/apache/gossip/SignedMessageTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/SignedMessageTest.java
rename to gossip-base/src/test/java/org/apache/gossip/SignedMessageTest.java
diff --git a/src/test/java/org/apache/gossip/StartupSettingsTest.java b/gossip-base/src/test/java/org/apache/gossip/StartupSettingsTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/StartupSettingsTest.java
rename to gossip-base/src/test/java/org/apache/gossip/StartupSettingsTest.java
diff --git a/src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java b/gossip-base/src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java
rename to gossip-base/src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java
diff --git a/src/test/java/org/apache/gossip/accrual/FailureDetectorTest.java b/gossip-base/src/test/java/org/apache/gossip/accrual/FailureDetectorTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/accrual/FailureDetectorTest.java
rename to gossip-base/src/test/java/org/apache/gossip/accrual/FailureDetectorTest.java
diff --git a/src/test/java/org/apache/gossip/crdt/GrowOnlyCounterTest.java b/gossip-base/src/test/java/org/apache/gossip/crdt/GrowOnlyCounterTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/crdt/GrowOnlyCounterTest.java
rename to gossip-base/src/test/java/org/apache/gossip/crdt/GrowOnlyCounterTest.java
diff --git a/src/test/java/org/apache/gossip/crdt/GrowOnlySetTest.java b/gossip-base/src/test/java/org/apache/gossip/crdt/GrowOnlySetTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/crdt/GrowOnlySetTest.java
rename to gossip-base/src/test/java/org/apache/gossip/crdt/GrowOnlySetTest.java
diff --git a/src/test/java/org/apache/gossip/crdt/OrSetTest.java b/gossip-base/src/test/java/org/apache/gossip/crdt/OrSetTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/crdt/OrSetTest.java
rename to gossip-base/src/test/java/org/apache/gossip/crdt/OrSetTest.java
diff --git a/src/test/java/org/apache/gossip/manager/DataReaperTest.java b/gossip-base/src/test/java/org/apache/gossip/manager/DataReaperTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/manager/DataReaperTest.java
rename to gossip-base/src/test/java/org/apache/gossip/manager/DataReaperTest.java
diff --git a/src/test/java/org/apache/gossip/manager/GossipManagerBuilderTest.java b/gossip-base/src/test/java/org/apache/gossip/manager/GossipManagerBuilderTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/manager/GossipManagerBuilderTest.java
rename to gossip-base/src/test/java/org/apache/gossip/manager/GossipManagerBuilderTest.java
diff --git a/src/test/java/org/apache/gossip/manager/RingPersistenceTest.java b/gossip-base/src/test/java/org/apache/gossip/manager/RingPersistenceTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/manager/RingPersistenceTest.java
rename to gossip-base/src/test/java/org/apache/gossip/manager/RingPersistenceTest.java
diff --git a/src/test/java/org/apache/gossip/manager/UserDataPersistenceTest.java b/gossip-base/src/test/java/org/apache/gossip/manager/UserDataPersistenceTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/manager/UserDataPersistenceTest.java
rename to gossip-base/src/test/java/org/apache/gossip/manager/UserDataPersistenceTest.java
diff --git a/src/test/java/org/apache/gossip/manager/handlers/MessageInvokerTest.java b/gossip-base/src/test/java/org/apache/gossip/manager/handlers/MessageInvokerTest.java
similarity index 100%
rename from src/test/java/org/apache/gossip/manager/handlers/MessageInvokerTest.java
rename to gossip-base/src/test/java/org/apache/gossip/manager/handlers/MessageInvokerTest.java
diff --git a/src/test/resources/log4j.properties b/gossip-base/src/test/resources/log4j.properties
similarity index 100%
rename from src/test/resources/log4j.properties
rename to gossip-base/src/test/resources/log4j.properties
diff --git a/pom.xml b/pom.xml
index 827f914..f9c7814 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,25 +19,11 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	
-	<parent>
-		<groupId>org.apache</groupId>
-		<artifactId>apache</artifactId>
-		<version>RELEASE</version>
-	</parent>
-	
-	<groupId>org.apache.gossip</groupId>
-	<artifactId>gossip</artifactId>
-	<name>gossip</name>
-	<version>0.1.3-incubating-SNAPSHOT</version>
-	<packaging>jar</packaging>
-	<description>A peer to peer cluster discovery service</description>
-	<url>http://gossip.incubator.apache.org/</url>
-
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<java.version>1.8</java.version>
 		
-		<!-- dependecy versions -->
+		<!-- dependency versions -->
 		<jackson.version>2.8.5</jackson.version>
 		<metrics.version>3.1.2</metrics.version>
 		<commons-math.version>1.2</commons-math.version>
@@ -55,6 +41,26 @@
 		<maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>
 	</properties>
 	
+	<parent>
+		<groupId>org.apache</groupId>
+		<artifactId>apache</artifactId>
+		<version>RELEASE</version>
+	</parent>
+  
+  <name>Gossip Parent</name>
+  <groupId>org.apache.gossip</groupId>
+	<artifactId>gossip-parent</artifactId>
+	<version>0.1.3-incubating-SNAPSHOT</version>
+	
+	<packaging>pom</packaging>
+	
+	<modules>
+		<module>gossip-base</module>
+	</modules>
+	
+	<description>A peer to peer cluster discovery service</description>
+	<url>http://gossip.incubator.apache.org/</url>
+
 	<licenses>
 		<license>
 			<name>The Apache Software License, Version 2.0</name>
@@ -75,96 +81,23 @@
 		<url>https://issues.apache.org/jira/browse/GOSSIP</url>
 	</issueManagement>
 	
-	<dependencies>
-		<dependency>
-    			<groupId>com.fasterxml.jackson.core</groupId>
-    			<artifactId>jackson-core</artifactId>
-    			<version>${jackson.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>commons-math</groupId>
-			<artifactId>commons-math</artifactId>
-			<version>${commons-math.version}</version>
-		</dependency> 
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-databind</artifactId>
-			<version>${jackson.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>io.dropwizard.metrics</groupId>
-			<artifactId>metrics-core</artifactId>
-			<version>${metrics.version}</version></dependency>
-		<dependency>
-			<groupId>org.junit.jupiter</groupId>
-			<artifactId>junit-jupiter-api</artifactId>
-			<version>${junit.jupiter.version}</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.junit.jupiter</groupId>
-			<artifactId>junit-jupiter-engine</artifactId>
-			<version>${junit.jupiter.version}</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-            		<groupId>org.junit.vintage</groupId>
-            		<artifactId>junit-vintage-engine</artifactId>
-            		<version>${junit.vintage.version}</version>
-            		<scope>test</scope>
-        	</dependency>
-        	<dependency>
-            		<groupId>org.junit.platform</groupId>
-            		<artifactId>junit-platform-runner</artifactId>
-            		<version>${junit.platform.version}</version>
-            		<scope>test</scope>
-        	</dependency>
-		<dependency>
-			<groupId>io.teknek</groupId>
-			<artifactId>tunit</artifactId>
-			<version>${tunit.version}</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
-			<version>${log4j.version}</version>
-			<type>jar</type>
-			<scope>compile</scope>
-			<exclusions>
-				<exclusion>
-					<groupId>javax.jms</groupId>
-					<artifactId>jms</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>com.sun.jdmk</groupId>
-					<artifactId>jmxtools</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>com.sun.jmx</groupId>
-					<artifactId>jmxri</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-	</dependencies>
-	
 	<build>
 		<pluginManagement>
 			<plugins>
-            				<!-- we need to tweak the maven-release-plugin for GIT -->
-            				<plugin>
-                				<groupId>org.apache.maven.plugins</groupId>
-                				<artifactId>maven-release-plugin</artifactId>
-                				<version>2.5.1</version>
-                				<configuration>
-			                    		<pushChanges>false</pushChanges>
-                    					<localCheckout>true</localCheckout>
-                    					<autoVersionSubmodules>true</autoVersionSubmodules>
+				<!-- we need to tweak the maven-release-plugin for GIT -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-release-plugin</artifactId>
+					<version>2.5.1</version>
+					<configuration>
+						<pushChanges>false</pushChanges>
+						<localCheckout>true</localCheckout>
+						<autoVersionSubmodules>true</autoVersionSubmodules>
 
-                    					<releaseProfiles>distribution</releaseProfiles>
-                    					<preparationGoals>clean install</preparationGoals>
-                				</configuration>
-            				</plugin>
+						<releaseProfiles>distribution</releaseProfiles>
+						<preparationGoals>clean install</preparationGoals>
+					</configuration>
+				</plugin>
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-jar-plugin</artifactId>
@@ -197,49 +130,49 @@
 			</plugins>
 		</pluginManagement>
 		<plugins>
-            		<plugin>
-                		<artifactId>maven-compiler-plugin</artifactId>
-                		<version>3.1</version>
-                		<configuration>
-                    			<source>${java.version}</source>
-                    			<target>${java.version}</target>
-                		</configuration>
-            		</plugin>
-            		<plugin>
-                		<artifactId>maven-surefire-plugin</artifactId>
-                		<version>2.19.1</version>
-                    <configuration>
-                      <systemPropertyVariables>
-                        <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
-                      </systemPropertyVariables>
-                    </configuration>
-                		<dependencies>
-                    			<dependency>
-                        			<groupId>org.junit.platform</groupId>
- 			                       	<artifactId>junit-platform-surefire-provider</artifactId>
-                        			<version>${junit.platform.version}</version>
-                    			</dependency>
-                		</dependencies>
-            		</plugin>
 			<plugin>
-        			<groupId>org.apache.rat</groupId>
-        			<artifactId>apache-rat-plugin</artifactId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>${java.version}</source>
+					<target>${java.version}</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.19.1</version>
+				<configuration>
+					<systemPropertyVariables>
+						<java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
+					</systemPropertyVariables>
+				</configuration>
+				<dependencies>
+					<dependency>
+						<groupId>org.junit.platform</groupId>
+						<artifactId>junit-platform-surefire-provider</artifactId>
+						<version>${junit.platform.version}</version>
+					</dependency>
+				</dependencies>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.rat</groupId>
+				<artifactId>apache-rat-plugin</artifactId>
 				<configuration>
 					<excludes>
 						<exclude>README.md</exclude>
 						<exclude>eclipse_template.xml</exclude>
 					</excludes>
 				</configuration>
-        			<executions>
-          				<execution>
-            					<phase>verify</phase>
-            					<goals>
-              						<goal>check</goal>
-            					</goals>
-          				</execution>
-        			</executions>
-      			</plugin>
-        	</plugins>
+				<executions>
+					<execution>
+						<phase>verify</phase>
+						<goals>
+							<goal>check</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
 	</build>
 	
 	<repositories>