diff --git a/pom.xml b/pom.xml
index 912da3b..5b80e17 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,6 +41,8 @@
 		<!-- dependecy versions -->
 		<jackson-datatype-json-org.version>1.8.0</jackson-datatype-json-org.version>
 		<junit.jupiter.version>5.0.0-M2</junit.jupiter.version>
+		<junit.platform.version>1.0.0-M2</junit.platform.version>
+		<junit.vintage.version>4.12.0-M2</junit.vintage.version>
 		<log4j.version>1.2.17</log4j.version>
 		<tunit.version>0.0.0</tunit.version>
 		
@@ -78,15 +80,36 @@
 			<artifactId>jackson-datatype-json-org</artifactId>
 			<version>${jackson-datatype-json-org.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>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>
@@ -119,24 +142,6 @@
 	<build>
 		<pluginManagement>
 			<plugins>
-				<!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> 
-					<version>2.1</version> <configuration> <mavenExecutorId>forked-path</mavenExecutorId> 
-					<useReleaseProfile>false</useReleaseProfile> <arguments>${arguments} -Psonatype-oss-release</arguments> 
-					</configuration> </plugin> -->
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-gpg-plugin</artifactId>
-					<version>${maven-gpg-plugin.version}</version>
-					<executions>
-						<execution>
-							<id>sign-artifacts</id>
-							<phase>verify</phase>
-							<goals>
-								<goal>sign</goal>
-							</goals>
-						</execution>
-					</executions>
-				</plugin>
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-jar-plugin</artifactId>
@@ -153,24 +158,6 @@
 				</plugin>
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-eclipse-plugin</artifactId>
-					<version>${maven-eclipse-plugin.version}</version>
-					<configuration>
-						<projectNameTemplate>[artifactId]</projectNameTemplate>
-						<wtpmanifest>true</wtpmanifest>
-						<wtpapplicationxml>true</wtpapplicationxml>
-						<additionalBuildcommands>
-							<buildcommand>org.eclipse.jdt.core.javabuilder</buildcommand>
-							<buildcommand>org.maven.ide.eclipse.maven2Builder</buildcommand>
-						</additionalBuildcommands>
-						<additionalProjectnatures>
-							<projectnature>org.eclipse.jdt.core.javanature</projectnature>
-							<projectnature>org.maven.ide.eclipse.maven2Nature</projectnature>
-						</additionalProjectnatures>
-					</configuration>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-compiler-plugin</artifactId>
 					<version>${maven-compiler-plugin.version}</version>
 					<configuration>
@@ -186,6 +173,27 @@
 				</plugin>
 			</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>
+                		<dependencies>
+                    			<dependency>
+                        			<groupId>org.junit.platform</groupId>
+ 			                       	<artifactId>junit-platform-surefire-provider</artifactId>
+                        			<version>${junit.platform.version}</version>
+                    			</dependency>
+                		</dependencies>
+            		</plugin>
+        	</plugins>
 	</build>
 	
 	<repositories>
diff --git a/src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java b/src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java
index 251550b..f0d7f10 100644
--- a/src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java
+++ b/src/test/java/org/apache/gossip/ShutdownDeadtimeTest.java
@@ -34,13 +34,17 @@
 
 import org.apache.gossip.event.GossipListener;
 import org.apache.gossip.event.GossipState;
+import org.junit.platform.runner.JUnitPlatform;
 import org.junit.jupiter.api.Test;
 
+import org.junit.runner.RunWith;
+
+@RunWith(JUnitPlatform.class)
 public class ShutdownDeadtimeTest {
 
-  private static final Logger log = Logger.getLogger(ShutdownDeadtimeTest.class );
+  private static final Logger log = Logger.getLogger(ShutdownDeadtimeTest.class);
+
   @Test
-  //@Ignore
   public void DeadNodesDoNotComeAliveAgain() throws InterruptedException, UnknownHostException, URISyntaxException {
       GossipSettings settings = new GossipSettings(1000, 10000);
       String cluster = UUID.randomUUID().toString();
diff --git a/src/test/java/org/apache/gossip/StartupSettingsTest.java b/src/test/java/org/apache/gossip/StartupSettingsTest.java
index ed069c3..9019ac1 100644
--- a/src/test/java/org/apache/gossip/StartupSettingsTest.java
+++ b/src/test/java/org/apache/gossip/StartupSettingsTest.java
@@ -32,11 +32,14 @@
 import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
 
 /**
  * Tests support of using {@code StartupSettings} and thereby reading
  * setup config from file.
  */
+@RunWith(JUnitPlatform.class)
 public class StartupSettingsTest {
   private static final Logger log = Logger.getLogger( StartupSettingsTest.class );
   private static final String CLUSTER = UUID.randomUUID().toString();
diff --git a/src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java b/src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java
index 350fc6f..c98b0d3 100644
--- a/src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java
+++ b/src/test/java/org/apache/gossip/TenNodeThreeSeedTest.java
@@ -27,14 +27,15 @@
 import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
-
-
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
 import org.apache.log4j.Logger;
 
 import org.apache.gossip.event.GossipListener;
 import org.apache.gossip.event.GossipState;
 import org.junit.jupiter.api.Test;
 
+@RunWith(JUnitPlatform.class)
 public class TenNodeThreeSeedTest {
   private static final Logger log = Logger.getLogger( TenNodeThreeSeedTest.class );
 
diff --git a/src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java b/src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java
index 6c63516..ab3242c 100644
--- a/src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java
+++ b/src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java
@@ -24,6 +24,8 @@
 import org.apache.gossip.event.GossipState;
 import org.apache.gossip.manager.random.RandomGossipManager;
 import org.junit.jupiter.api.Test;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
 
 import javax.management.Notification;
 import javax.management.NotificationListener;
@@ -37,7 +39,7 @@
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.expectThrows;
 
-
+@RunWith(JUnitPlatform.class)
 public class RandomGossipManagerBuilderTest {
 
   public static class TestGossipListener implements GossipListener {
