diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyBatchOperation.java b/src/main/java/net/onrc/onos/core/topology/TopologyBatchOperation.java
index f05e9d0..f7d7049 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyBatchOperation.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyBatchOperation.java
@@ -7,7 +7,7 @@
  * A list of topology operations.
  */
 public class TopologyBatchOperation extends
-        BatchOperation<BatchOperationEntry<TopologyBatchOperation.Operator, TopologyBatchTarget>> {
+        BatchOperation<BatchOperationEntry<TopologyBatchOperation.Operator, TopologyEvent>> {
 
     /**
      * The topology operations' operators.
@@ -25,28 +25,28 @@
     }
 
     /**
-     * Adds an add-TopologyEvent operation.
+     * Appends an ADD-TopologyEvent operation.
      *
-     * @param topologyEvent the Topology Event to be added
+     * @param topologyEvent the Topology Event to be appended
      * @return the TopologyBatchOperation object
      */
-    public TopologyBatchOperation addAddTopologyOperation(
+    public TopologyBatchOperation appendAddOperation(
                                         TopologyEvent topologyEvent) {
         return (TopologyBatchOperation) addOperation(
-                new BatchOperationEntry<Operator, TopologyBatchTarget>(
+                new BatchOperationEntry<Operator, TopologyEvent>(
                                         Operator.ADD, topologyEvent));
     }
 
     /**
-     * Adds a remove-TopologyEvent operation.
+     * Appends a REMOVE-TopologyEvent operation.
      *
-     * @param topologyEvent the Topology Event to be removed
+     * @param topologyEvent the Topology Event to be appended
      * @return the TopologyBatchOperation object
      */
-    public TopologyBatchOperation addRemoveTopologyOperation(
+    public TopologyBatchOperation appendRemoveOperation(
                                         TopologyEvent topologyEvent) {
         return (TopologyBatchOperation) addOperation(
-                new BatchOperationEntry<Operator, TopologyBatchTarget>(
+                new BatchOperationEntry<Operator, TopologyEvent>(
                                         Operator.REMOVE, topologyEvent));
     }
 }
