diff --git a/drivers/default/src/main/java/org/onosproject/driver/extensions/DefaultMoveExtensionTreatment.java b/drivers/default/src/main/java/org/onosproject/driver/extensions/DefaultMoveExtensionTreatment.java
index a2395b8..86b44cf 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/extensions/DefaultMoveExtensionTreatment.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/extensions/DefaultMoveExtensionTreatment.java
@@ -39,7 +39,7 @@
 
     private final KryoNamespace appKryo = new KryoNamespace.Builder()
             .register(byte[].class).register(Integer.class).register(Map.class)
-            .build();
+            .build("DefaultMoveExtensionTreatment");
 
     /**
      * Creates a new move Treatment.
diff --git a/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java b/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java
index cecdbd3..e1b5be9 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java
@@ -46,7 +46,7 @@
             .register(new PortNumberSerializer(), PortNumber.class)
             .register(Map.class).register(HashMap.class)
             .register(byte[].class)
-            .build();
+            .build("NiciraResubmit");
 
     /**
      * Creates a new resubmit instruction.
diff --git a/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmitTable.java b/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmitTable.java
index 47757c3..b3183df 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmitTable.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraResubmitTable.java
@@ -47,7 +47,7 @@
             .register(new PortNumberSerializer(), PortNumber.class)
             .register(Map.class).register(HashMap.class)
             .register(byte[].class)
-            .build();
+            .build("NiciraResubmitTable");
 
     /**
      * Creates a new resubmit-table instruction.
diff --git a/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java b/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java
index 40499bb..efd409a 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java
@@ -39,7 +39,7 @@
     private final KryoNamespace appKryo = new KryoNamespace.Builder()
             .register(new Ip4AddressSerializer(), Ip4Address.class)
             .register(byte[].class)
-            .build();
+            .build("NiciraSetTunnelDst");
 
     /**
      * Creates a new set tunnel destination instruction.
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/CentecV350Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/CentecV350Pipeline.java
index 216ecc4..183d997 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/CentecV350Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/CentecV350Pipeline.java
@@ -134,7 +134,7 @@
             .register(DefaultGroupKey.class)
             .register(CentecV350Group.class)
             .register(byte[].class)
-            .build();
+            .build("CentecV350Pipeline");
 
     private Cache<GroupKey, NextObjective> pendingGroups;
 
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
index 884e41a..8ac24d4 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
@@ -69,7 +69,7 @@
             .register(DefaultGroupKey.class)
             .register(SingleGroup.class)
             .register(byte[].class)
-            .build();
+            .build("DefaultSingleTablePipeline");
 
 
     @Override
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
index eca8412..6f42dbc 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
@@ -121,9 +121,8 @@
         .register(GroupKey.class)
         .register(DefaultGroupKey.class)
         .register(Ofdpa2GroupHandler.OfdpaNextGroup.class)
-        .register(byte[].class)
         .register(ArrayDeque.class)
-        .build();
+        .build("Ofdpa2Pipeline");
 
     protected Ofdpa2GroupHandler groupHandler;
 
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
index 0139573..a323427 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
@@ -114,8 +114,7 @@
             .register(GroupKey.class)
             .register(DefaultGroupKey.class)
             .register(OLTPipelineGroup.class)
-            .register(byte[].class)
-            .build();
+            .build("OltPipeline");
 
     @Override
     public void init(DeviceId deviceId, PipelinerContext context) {
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java
index c407a61..810bceb 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java
@@ -90,8 +90,7 @@
     private KryoNamespace appKryo = new KryoNamespace.Builder()
             .register(KryoNamespaces.API)
             .register(PicaGroup.class)
-            .register(byte[].class)
-            .build();
+            .build("PicaPipeline");
 
     @Override
     public void init(DeviceId deviceId, PipelinerContext context) {
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java
index ad235f9..064a71e 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java
@@ -140,8 +140,7 @@
             .register(DefaultGroupKey.class)
             .register(TrafficTreatment.class)
             .register(SpringOpenGroup.class)
-            .register(byte[].class)
-            .build();
+            .build("SpringOpenTTP");
 
     @Override
     public void init(DeviceId deviceId, PipelinerContext context) {
