diff --git a/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentInstallerTest.java b/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentInstallerTest.java
index 755fa87..a874ea4 100644
--- a/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentInstallerTest.java
+++ b/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentInstallerTest.java
@@ -10,8 +10,8 @@
 import net.onrc.onos.core.matchaction.action.OutputAction;
 import net.onrc.onos.core.matchaction.match.PacketMatchBuilder;
 import net.onrc.onos.core.util.Dpid;
-import net.onrc.onos.core.util.Pair;
 import net.onrc.onos.core.util.SwitchPort;
+import org.apache.commons.lang3.tuple.Pair;
 import org.junit.Test;
 
 import java.util.HashSet;
@@ -90,8 +90,8 @@
         tree.add(new FlowLink(port13, port31));
 
         Set<Pair<Dpid, OutputAction>> actions = new HashSet<>();
-        actions.add(new Pair<>(egress1.getDpid(), new OutputAction(egress1.getPortNumber())));
-        actions.add(new Pair<>(egress2.getDpid(), new OutputAction(egress2.getPortNumber())));
+        actions.add(Pair.of(egress1.getDpid(), new OutputAction(egress1.getPortNumber())));
+        actions.add(Pair.of(egress2.getDpid(), new OutputAction(egress2.getPortNumber())));
 
         return new SingleSrcTreeFlow(
                 flowId,
diff --git a/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentTest.java b/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentTest.java
index cfd9391..a9a3dbf 100644
--- a/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentTest.java
+++ b/src/test/java/net/onrc/onos/core/newintent/SingleSrcTreeFlowIntentTest.java
@@ -10,10 +10,11 @@
 import net.onrc.onos.core.matchaction.match.PacketMatch;
 import net.onrc.onos.core.matchaction.match.PacketMatchBuilder;
 import net.onrc.onos.core.util.Dpid;
-import net.onrc.onos.core.util.Pair;
 import net.onrc.onos.core.util.PortNumber;
 import net.onrc.onos.core.util.SwitchPort;
 
+import org.apache.commons.lang3.tuple.Pair;
+
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
@@ -41,8 +42,8 @@
     @Override
     protected SingleSrcTreeFlowIntent createOne() {
         Set<Pair<Dpid, OutputAction>> actions = new HashSet<>(Arrays.asList(
-                new Pair<>(dpid2, action2),
-                new Pair<>(dpid3, action3)
+                Pair.of(dpid2, action2),
+                Pair.of(dpid3, action3)
         ));
         SingleSrcTreeFlow tree = new SingleSrcTreeFlow(flowId1, match,
                 new SwitchPort(dpid1, port3), createTree(), actions
@@ -53,8 +54,8 @@
     @Override
     protected SingleSrcTreeFlowIntent createAnother() {
         Set<Pair<Dpid, OutputAction>> actions = new HashSet<>(Arrays.asList(
-                new Pair<>(dpid1, action1),
-                new Pair<>(dpid3, action3)
+                Pair.of(dpid1, action1),
+                Pair.of(dpid3, action3)
         ));
         SingleSrcTreeFlow tree = new SingleSrcTreeFlow(flowId2, match,
                 new SwitchPort(dpid2, port3), createTree(), actions
diff --git a/src/test/java/net/onrc/onos/core/util/PairTest.java b/src/test/java/net/onrc/onos/core/util/PairTest.java
deleted file mode 100644
index 954b01f..0000000
--- a/src/test/java/net/onrc/onos/core/util/PairTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package net.onrc.onos.core.util;
-
-import org.junit.Test;
-
-import static net.onrc.onos.core.util.ImmutableClassChecker.assertThatClassIsImmutable;
-
-/**
- * PairTest class tests the immutability of Pair class when immutable objects are supplied.
- */
-public class PairTest {
-    /**
-     * Tests Pair class satisfies the guideline for immutable objects
-     * by using ImmutableClassChecker framework.
-     */
-    @Test
-    public void pairClassFollowsGuidelineForImmutableObject() {
-        assertThatClassIsImmutable(Pair.class);
-    }
-}
