diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/PathComputation.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
similarity index 98%
rename from src/main/java/net/onrc/onos/ofcontroller/flowmanager/PathComputation.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
index b9806b5..08f57ed 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/PathComputation.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
@@ -33,9 +33,9 @@
 /**
  * Class for implementing the Path Computation and Path Maintenance.
  */
-class PathComputation extends Thread implements IPathComputationService {
+class FlowEventHandler extends Thread implements IFlowEventHandlerService {
     /** The logger. */
-    private final static Logger log = LoggerFactory.getLogger(PathComputation.class);
+    private final static Logger log = LoggerFactory.getLogger(FlowEventHandler.class);
 
     private FlowManager flowManager;		// The Flow Manager to use
     private IDatagridService datagridService;	// The Datagrid Service to use
@@ -60,8 +60,8 @@
      * @param flowManager the Flow Manager to use.
      * @param datagridService the Datagrid Service to use.
      */
-    PathComputation(FlowManager flowManager,
-		    IDatagridService datagridService) {
+    FlowEventHandler(FlowManager flowManager,
+		     IDatagridService datagridService) {
 	this.flowManager = flowManager;
 	this.datagridService = datagridService;
 	this.topology = new Topology();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
index ecbb49c..c14772d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
@@ -48,7 +48,7 @@
     protected volatile IDatagridService datagridService;
     protected IRestApiService restApi;
     protected FloodlightModuleContext context;
-    protected PathComputation pathComputation;
+    protected FlowEventHandler flowEventHandler;
 
     protected OFMessageDamper messageDamper;
 
@@ -385,7 +385,7 @@
      */
     @Override
     public void close() {
-	datagridService.deregisterPathComputationService(pathComputation);
+	datagridService.deregisterFlowEventHandlerService(flowEventHandler);
     	dbHandler.close();
     }
 
@@ -495,14 +495,14 @@
 	nextFlowEntryIdPrefix = randomGenerator.nextInt();
 
 	//
-	// Create the Path Computation thread and register it with the
+	// Create the Flow Event Handler thread and register it with the
 	// Datagrid Service
 	//
-	pathComputation = new PathComputation(this, datagridService);
-	datagridService.registerPathComputationService(pathComputation);
+	flowEventHandler = new FlowEventHandler(this, datagridService);
+	datagridService.registerFlowEventHandlerService(flowEventHandler);
 
 	// Schedule the threads and periodic tasks
-	pathComputation.start();
+	flowEventHandler.start();
 	mapReaderScheduler.scheduleAtFixedRate(
 			mapReader, 3, 3, TimeUnit.SECONDS);
 	shortestPathReconcileScheduler.scheduleAtFixedRate(
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/IPathComputationService.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/IFlowEventHandlerService.java
similarity index 94%
rename from src/main/java/net/onrc/onos/ofcontroller/flowmanager/IPathComputationService.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowmanager/IFlowEventHandlerService.java
index 1966683..78562e1 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/IPathComputationService.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/IFlowEventHandlerService.java
@@ -5,9 +5,9 @@
 import net.onrc.onos.ofcontroller.util.FlowPath;
 
 /**
- * Interface for providing Path Computation Service to other modules.
+ * Interface for providing Flow Event Handler Service to other modules.
  */
-public interface IPathComputationService {
+public interface IFlowEventHandlerService {
     /**
      * Receive a notification that a Flow is added.
      *
