diff --git a/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java b/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java
index 6ceb6d3..fb5d701 100644
--- a/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java
+++ b/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java
@@ -80,6 +80,7 @@
 import org.onosproject.net.group.GroupKey;
 import org.onosproject.net.group.GroupListener;
 import org.onosproject.net.group.GroupService;
+import org.onosproject.store.serializers.KryoNamespaces;
 import org.slf4j.Logger;
 
 import com.google.common.cache.Cache;
@@ -137,6 +138,7 @@
     private ApplicationId driverId;
 
     private KryoNamespace appKryo = new KryoNamespace.Builder()
+        .register(KryoNamespaces.API)
         .register(GroupKey.class)
         .register(DefaultGroupKey.class)
         .register(OfdpaGroupChain.class)
@@ -574,9 +576,9 @@
                 fail(fwd, ObjectiveError.GROUPMISSING);
                 return Collections.emptySet();
             }
-            tb.group(group.id());
+            tb.deferred().group(group.id());
         }
-
+        tb.transition(ACL_TABLE);
         FlowRule.Builder ruleBuilder = DefaultFlowRule.builder()
                 .fromApp(fwd.appId())
                 .withPriority(fwd.priority())
@@ -634,7 +636,7 @@
                 .fromApp(driverId)
                 .makePermanent()
                 .forTable(PORT_TABLE).build();
-        ops = ops.add(tmisse);
+        /*ops = ops.add(tmisse);
 
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
@@ -646,7 +648,7 @@
             public void onError(FlowRuleOperations ops) {
                 log.info("Failed to initialize port table");
             }
-        }));
+        }));*/
 
     }
 
@@ -716,7 +718,7 @@
                 .fromApp(driverId)
                 .makePermanent()
                 .forTable(TMAC_TABLE).build();
-        ops =  ops.add(rule); // XXX bug in ofdpa
+        /*ops =  ops.add(rule); // XXX bug in ofdpa
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
             public void onSuccess(FlowRuleOperations ops) {
@@ -727,7 +729,7 @@
             public void onError(FlowRuleOperations ops) {
                 log.info("Failed to initialize tmac table");
             }
-        }));
+        }));*/
     }
 
     private void processIpTable() {
@@ -746,7 +748,7 @@
                 .fromApp(driverId)
                 .makePermanent()
                 .forTable(UNICAST_ROUTING_TABLE).build();
-        ops =  ops.add(rule);
+        /*ops =  ops.add(rule);
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
             public void onSuccess(FlowRuleOperations ops) {
@@ -757,7 +759,7 @@
             public void onError(FlowRuleOperations ops) {
                 log.info("Failed to initialize unicast IP table");
             }
-        }));
+        }));*/
     }
 
     @SuppressWarnings("unused")
diff --git a/drivers/src/main/resources/onos-drivers.xml b/drivers/src/main/resources/onos-drivers.xml
index 8be7812..601e162 100644
--- a/drivers/src/main/resources/onos-drivers.xml
+++ b/drivers/src/main/resources/onos-drivers.xml
@@ -58,7 +58,7 @@
                    impl="org.onosproject.driver.handshaker.CorsaSwitchHandshaker"/>
     </driver>
     <driver name="ofdpa" extends="default"
-            manufacturer="Broadcom Corp." hwVersion="OF-DPA 1.0" swVersion="OF-DPA 1.0">
+            manufacturer="Broadcom Corp." hwVersion="OF-DPA 2.0-EA1" swVersion="OF-DPA 2.0-EA1">
         <behaviour api="org.onosproject.net.behaviour.Pipeliner"
                    impl="org.onosproject.driver.pipeline.OFDPA1Pipeline"/>
     </driver>
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java
index c670b63..272c311 100644
--- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java
+++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java
@@ -38,6 +38,7 @@
 import org.projectfloodlight.openflow.protocol.action.OFActionDecMplsTtl;
 import org.projectfloodlight.openflow.protocol.action.OFActionDecNwTtl;
 import org.projectfloodlight.openflow.protocol.action.OFActionExperimenter;
+import org.projectfloodlight.openflow.protocol.action.OFActionGroup;
 import org.projectfloodlight.openflow.protocol.action.OFActionOutput;
 import org.projectfloodlight.openflow.protocol.action.OFActionPopMpls;
 import org.projectfloodlight.openflow.protocol.action.OFActionPushMpls;
@@ -209,6 +210,10 @@
                     OFActionDecNwTtl decNwTtl = (OFActionDecNwTtl) act;
                     builder.decNwTtl();
                     break;
+                case GROUP:
+                    OFActionGroup grp = (OFActionGroup) act;
+                    builder.group(new DefaultGroupId(grp.getGroup().getGroupNumber()));
+                    break;
                 case SET_TP_DST:
                 case SET_TP_SRC:
                 case POP_PBB:
@@ -222,7 +227,6 @@
                 case SET_QUEUE:
                 case STRIP_VLAN:
                 case ENQUEUE:
-                case GROUP:
                 default:
                     log.warn("Action type {} not yet implemented.", act.getType());
             }
