diff --git a/core/api/src/test/java/org/onlab/onos/net/intent/ImmutableClassChecker.java b/core/api/src/test/java/org/onlab/onos/net/intent/ImmutableClassChecker.java
deleted file mode 100644
index 0e63af9..0000000
--- a/core/api/src/test/java/org/onlab/onos/net/intent/ImmutableClassChecker.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package org.onlab.onos.net.intent;
-//TODO is this the right package?
-
-import org.hamcrest.Description;
-import org.hamcrest.StringDescription;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-/**
- * Hamcrest style class for verifying that a class follows the
- * accepted rules for immutable classes.
- *
- * The rules that are enforced for immutable classes:
- *    - the class must be declared final
- *    - all data members of the class must be declared private and final
- *    - the class must not define any setter methods
- */
-
-public class ImmutableClassChecker {
-
-    private String failureReason = "";
-
-    /**
-     * Method to determine if a given class is a properly specified
-     * immutable class.
-     *
-     * @param clazz the class to check
-     * @return true if the given class is a properly specified immutable class.
-     */
-    private boolean isImmutableClass(Class<?> clazz) {
-        // class must be declared final
-        if (!Modifier.isFinal(clazz.getModifiers())) {
-            failureReason = "a class that is not final";
-            return false;
-        }
-
-        // class must have only final and private data members
-        for (final Field field : clazz.getDeclaredFields()) {
-            if (field.getName().startsWith("__cobertura")) {
-                //  cobertura sticks these fields into classes - ignore them
-                continue;
-            }
-            if (!Modifier.isFinal(field.getModifiers())) {
-                failureReason = "a field named '" + field.getName() +
-                                "' that is not final";
-                return false;
-            }
-            if (!Modifier.isPrivate(field.getModifiers())) {
-                //
-                // NOTE: We relax the recommended rules for defining immutable
-                // objects and allow "static final" fields that are not
-                // private. The "final" check was already done above so we
-                // don't repeat it here.
-                //
-                if (!Modifier.isStatic(field.getModifiers())) {
-                    failureReason = "a field named '" + field.getName() +
-                                "' that is not private and is not static";
-                    return false;
-                }
-            }
-        }
-
-        //  class must not define any setters
-        for (final Method method : clazz.getMethods()) {
-            if (method.getDeclaringClass().equals(clazz)) {
-                if (method.getName().startsWith("set")) {
-                    failureReason = "a class with a setter named '" + method.getName() + "'";
-                    return false;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Describe why an error was reported.  Uses Hamcrest style Description
-     * interfaces.
-     *
-     * @param description the Description object to use for reporting the
-     *                    mismatch
-     */
-    public void describeMismatch(Description description) {
-        description.appendText(failureReason);
-    }
-
-    /**
-     * Describe the source object that caused an error, using a Hamcrest
-     * Matcher style interface.  In this case, it always returns
-     * that we are looking for a properly defined utility class.
-     *
-     * @param description the Description object to use to report the "to"
-     *                    object
-     */
-    public void describeTo(Description description) {
-        description.appendText("a properly defined immutable class");
-    }
-
-    /**
-     * Assert that the given class adheres to the utility class rules.
-     *
-     * @param clazz the class to check
-     *
-     * @throws java.lang.AssertionError if the class is not a valid
-     *         utility class
-     */
-    public static void assertThatClassIsImmutable(Class<?> clazz) {
-        final ImmutableClassChecker checker = new ImmutableClassChecker();
-        if (!checker.isImmutableClass(clazz)) {
-            final Description toDescription = new StringDescription();
-            final Description mismatchDescription = new StringDescription();
-
-            checker.describeTo(toDescription);
-            checker.describeMismatch(mismatchDescription);
-            final String reason =
-                    "\n" +
-                    "Expected: is \"" + toDescription.toString() + "\"\n" +
-                    "    but : was \"" + mismatchDescription.toString() + "\"";
-
-            throw new AssertionError(reason);
-        }
-    }
-}
diff --git a/core/api/src/test/java/org/onlab/onos/net/intent/IntentIdTest.java b/core/api/src/test/java/org/onlab/onos/net/intent/IntentIdTest.java
index 471e397..3e21187 100644
--- a/core/api/src/test/java/org/onlab/onos/net/intent/IntentIdTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/intent/IntentIdTest.java
@@ -6,6 +6,7 @@
 import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 
 /**
  * This class tests the immutability, equality, and non-equality of
@@ -17,7 +18,7 @@
      */
     @Test
     public void intentIdFollowsGuidelineForImmutableObject() {
-        ImmutableClassChecker.assertThatClassIsImmutable(IntentId.class);
+        assertThatClassIsImmutable(IntentId.class);
     }
 
     /**
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java b/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java
index 4ebee73..2b56e88 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java
@@ -11,6 +11,7 @@
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.not;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 import static org.onlab.onos.net.NetTestTools.hid;
 
 /**
@@ -104,6 +105,6 @@
      */
     @Test
     public void checkImmutability() {
-        ImmutableClassChecker.assertThatClassIsImmutable(HostToHostIntent.class);
+        assertThatClassIsImmutable(HostToHostIntent.class);
     }
 }
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java b/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java
index 65aa71f..42b5b28 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java
@@ -4,6 +4,7 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 import static org.onlab.onos.net.NetTestTools.link;
 
 import java.util.HashSet;
@@ -154,6 +155,6 @@
      */
     @Test
     public void checkImmutability() {
-        ImmutableClassChecker.assertThatClassIsImmutable(LinkCollectionIntent.class);
+        assertThatClassIsImmutable(LinkCollectionIntent.class);
     }
 }
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java b/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java
index 09dfcb2..0e4f706 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java
@@ -15,6 +15,7 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 import static org.onlab.onos.net.NetTestTools.connectPoint;
 
 /**
@@ -135,7 +136,6 @@
      */
     @Test
     public void checkImmutability() {
-        ImmutableClassChecker.
-                assertThatClassIsImmutable(MultiPointToSinglePointIntent.class);
+        assertThatClassIsImmutable(MultiPointToSinglePointIntent.class);
     }
 }
diff --git a/core/pom.xml b/core/pom.xml
index c0f74cf..fc8216f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -35,6 +35,7 @@
         <dependency>
             <groupId>org.onlab.onos</groupId>
             <artifactId>onlab-junit</artifactId>
+            <scope>test</scope>
         </dependency>
     </dependencies>
 
