diff --git a/build.gradle b/build.gradle
index 58c7625..578a479 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,7 @@
 apply plugin: 'signing'
 
 group = 'net.named-data.jndn-extra'
-version = '1.0.2-SNAPSHOT'
+version = '1.2.0'
 
 sourceCompatibility = JavaVersion.VERSION_1_8
 targetCompatibility = JavaVersion.VERSION_1_8
@@ -21,28 +21,29 @@
   mavenLocal()
   mavenCentral()
   maven {
-    url "https://oss.sonatype.org/content/repositories/snapshots/"
+    url "https://oss.sonatype.org/content/repositories/releases/"
   }
 }
 
 sourceSets {
   integrationTest {
     java {
+      srcDir 'src/integration-test/java'
       compileClasspath += main.output + test.output
       runtimeClasspath += main.output + test.output
-      srcDir file('src/integration-test/java')
     }
   }
 }
 
 configurations {
-    integrationTestCompile.extendsFrom testCompile
-    integrationTestRuntime.extendsFrom testRuntime
+  integrationTestCompile.extendsFrom testCompile
+  integrationTestRuntime.extendsFrom testRuntime
 }
 
 dependencies {
   compile 'com.google.guava:guava:25.1-jre'
   compile 'net.named-data:jndn:0.17'
+  compile 'org.mockito:mockito-core:2.20.0'
 
   testCompile 'junit:junit:4.12'
   testCompile 'net.named-data.jndn-extra:jndn-mock:1.1.1'
@@ -60,8 +61,12 @@
 
 task integrationTest(type: Test) {
   description 'Compile and run integration tests'
-  testClassesDir = sourceSets.integrationTest.output.classesDir
+  group = 'verification'
+
+  testClassesDirs = sourceSets.integrationTest.output.classesDirs
   classpath = sourceSets.integrationTest.runtimeClasspath
+
+  mustRunAfter test
 }
 
 tasks.withType(Test) {
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java b/src/integration-test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java
similarity index 100%
rename from src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java
rename to src/integration-test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java b/src/integration-test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java
similarity index 100%
rename from src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java
rename to src/integration-test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java b/src/integration-test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java
similarity index 100%
rename from src/test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java
rename to src/integration-test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java
diff --git a/src/test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java b/src/integration-test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java
similarity index 100%
rename from src/test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java
rename to src/integration-test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java
diff --git a/src/test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java b/src/integration-test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java
similarity index 100%
rename from src/test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java
rename to src/integration-test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java
diff --git a/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java b/src/integration-test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java
similarity index 100%
rename from src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java
rename to src/integration-test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java
diff --git a/src/main/java/com/intel/jndn/utils/server/impl/SimpleServer.java b/src/main/java/com/intel/jndn/utils/server/impl/SimpleServer.java
index 1c1a643..f633dd5 100644
--- a/src/main/java/com/intel/jndn/utils/server/impl/SimpleServer.java
+++ b/src/main/java/com/intel/jndn/utils/server/impl/SimpleServer.java
@@ -21,7 +21,7 @@
 import net.named_data.jndn.Interest;
 import net.named_data.jndn.InterestFilter;
 import net.named_data.jndn.Name;
-import net.named_data.jndn.OnInterest;
+import net.named_data.jndn.OnInterestCallback;
 import net.named_data.jndn.util.Blob;
 
 import java.io.IOException;
@@ -29,7 +29,7 @@
 import java.util.logging.Logger;
 
 /**
- * Implementation of a {@link DynamicServer} that wraps the {@link OnInterest}
+ * Implementation of a {@link DynamicServer} that wraps the {@link OnInterestCallback}
  * callback with some encoding and pipeline support.
  *
  * @author Andrew Brown, andrew.brown@intel.com
