diff --git a/src/test/java/net/onrc/onos/core/intent/IntentMapTest.java b/src/test/java/net/onrc/onos/core/intent/IntentMapTest.java
index ca9ddbd..a13ff49 100644
--- a/src/test/java/net/onrc/onos/core/intent/IntentMapTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/IntentMapTest.java
@@ -35,7 +35,6 @@
 
     @Test
     public void testChangedEventCreate() {
-        IntentMap intents = new IntentMap();
         IntentMap.ChangedEvent event = new IntentMap.ChangedEvent(
                 ChangedEventType.ADDED,
                 new Intent("id1"));
diff --git a/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java b/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java
index 421d2fa..17f5788 100644
--- a/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java
@@ -70,6 +70,8 @@
     private IControllerRegistryService controllerRegistryService;
     private PersistIntent persistIntent;
     private MockNetworkGraph graph;
+    private IEventChannel<Long, IntentOperationList> intentOperationChannel;
+    private IEventChannel<Long, IntentStateList> intentStateChannel;
 
     @SuppressWarnings("unchecked")
     @Before
@@ -81,7 +83,8 @@
         networkGraphService = createMock(INetworkGraphService.class);
         controllerRegistryService = createMock(IControllerRegistryService.class);
         modContext = createMock(FloodlightModuleContext.class);
-        final IEventChannel eventChannel = createMock(IEventChannel.class);
+        intentOperationChannel = createMock(IEventChannel.class);
+        intentStateChannel = createMock(IEventChannel.class);
         persistIntent = PowerMock.createMock(PersistIntent.class);
 
         PowerMock.expectNew(PersistIntent.class,
@@ -106,14 +109,14 @@
 
         expect(datagridService.createChannel("onos.pathintent",
                 Long.class, IntentOperationList.class))
-                .andReturn(eventChannel).once();
+                .andReturn(intentOperationChannel).once();
 
         expect(datagridService.addListener(
                 eq("onos.pathintent_state"),
                 anyObject(IEventChannelListener.class),
                 eq(Long.class),
                 eq(IntentStateList.class)))
-                .andReturn(eventChannel).once();
+                .andReturn(intentStateChannel).once();
 
         replay(datagridService);
         replay(networkGraphService);
diff --git a/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java b/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java
index 0e58739..4a0df3a 100755
--- a/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java
@@ -45,6 +45,10 @@
 import org.powermock.modules.junit4.PowerMockRunner;
 
 /**
+ * Temporary test cases for the ONS2014 demo.
+ * These test cases should be modified and be moved to appropriate classes
+ * (ex. PathCalcRuntimeModuleTest, PlanInstallModuleTest, etc.)
+ *
  * @author Toshio Koide (t-koide@onlab.us)
  */
 @RunWith(PowerMockRunner.class)
@@ -56,8 +60,8 @@
     private INetworkGraphService networkGraphService;
     private IControllerRegistryService controllerRegistryService;
     private PersistIntent persistIntent;
-    @SuppressWarnings("rawtypes")
-    private IEventChannel eventChannel;
+    private IEventChannel<Long, IntentOperationList> intentOperationChannel;
+    private IEventChannel<Long, IntentStateList> intentStateChannel;
 
     private static Long LOCAL_PORT = 0xFFFEL;
 
@@ -72,7 +76,8 @@
         networkGraphService = createMock(INetworkGraphService.class);
         controllerRegistryService = createMock(IControllerRegistryService.class);
         modContext = createMock(FloodlightModuleContext.class);
-        eventChannel = createMock(IEventChannel.class);
+        intentOperationChannel = createMock(IEventChannel.class);
+        intentStateChannel = createMock(IEventChannel.class);
         persistIntent = PowerMock.createMock(PersistIntent.class);
 
         PowerMock.expectNew(PersistIntent.class,
@@ -93,14 +98,14 @@
         expectLastCall();
 
         expect(datagridService.createChannel("onos.pathintent", Long.class, IntentOperationList.class))
-                .andReturn(eventChannel).once();
+                .andReturn(intentOperationChannel).once();
 
         expect(datagridService.addListener(
                 eq("onos.pathintent_state"),
                 anyObject(IEventChannelListener.class),
                 eq(Long.class),
                 eq(IntentStateList.class)))
-                .andReturn(eventChannel).once();
+                .andReturn(intentStateChannel).once();
 
         replay(datagridService);
         replay(networkGraphService);
