diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
index 3641895..97a2b68 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
@@ -200,18 +200,18 @@
 
         FlowRuleOperations.Builder fopsBuilder = FlowRuleOperations.builder();
         batch.getOperations().stream().forEach(op -> {
-                        switch (op.getOperator()) {
+                        switch (op.operator()) {
                             case ADD:
-                                fopsBuilder.add(op.getTarget());
+                                fopsBuilder.add(op.target());
                                 break;
                             case REMOVE:
-                                fopsBuilder.remove(op.getTarget());
+                                fopsBuilder.remove(op.target());
                                 break;
                             case MODIFY:
-                                fopsBuilder.modify(op.getTarget());
+                                fopsBuilder.modify(op.target());
                                 break;
                             default:
-                                log.warn("Unknown flow operation operator: {}", op.getOperator());
+                                log.warn("Unknown flow operation operator: {}", op.operator());
 
                         }
                 }
@@ -438,25 +438,25 @@
                 // Request has been forwarded to MASTER Node, and was
                 request.ops().stream().forEach(
                         op -> {
-                            switch (op.getOperator()) {
+                            switch (op.operator()) {
 
                                 case ADD:
                                     eventDispatcher.post(
                                             new FlowRuleEvent(
                                                     FlowRuleEvent.Type.RULE_ADD_REQUESTED,
-                                                    op.getTarget()));
+                                                    op.target()));
                                     break;
                                 case REMOVE:
                                     eventDispatcher.post(
                                             new FlowRuleEvent(
                                                     FlowRuleEvent.Type.RULE_REMOVE_REQUESTED,
-                                                    op.getTarget()));
+                                                    op.target()));
                                     break;
                                 case MODIFY:
                                     //TODO: do something here when the time comes.
                                     break;
                                 default:
-                                    log.warn("Unknown flow operation operator: {}", op.getOperator());
+                                    log.warn("Unknown flow operation operator: {}", op.operator());
                             }
                         }
                 );
