diff --git a/core/common/src/main/java/org/onosproject/codec/impl/ConstraintCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/ConstraintCodec.java
index 45728c5..5073834 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/ConstraintCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/ConstraintCodec.java
@@ -45,8 +45,8 @@
     public ObjectNode encode(Constraint constraint, CodecContext context) {
         checkNotNull(constraint, "Constraint cannot be null");
 
-        final EncodeConstraintCodec encodeCodec =
-                new EncodeConstraintCodec(constraint, context);
+        final EncodeConstraintCodecHelper encodeCodec =
+                new EncodeConstraintCodecHelper(constraint, context);
 
         return encodeCodec.encode();
     }
@@ -55,8 +55,8 @@
     public Constraint decode(ObjectNode json, CodecContext context) {
         checkNotNull(json, "JSON cannot be null");
 
-        final DecodeConstraintCodec decodeCodec =
-                new DecodeConstraintCodec(json);
+        final DecodeConstraintCodecHelper decodeCodec =
+                new DecodeConstraintCodecHelper(json);
 
         return decodeCodec.decode();
     }
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
index 98cd3bd..8a6a729 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
@@ -63,13 +63,13 @@
 
     @Override
     public ObjectNode encode(Criterion criterion, CodecContext context) {
-        EncodeCriterionCodec encoder = new EncodeCriterionCodec(criterion, context);
+        EncodeCriterionCodecHelper encoder = new EncodeCriterionCodecHelper(criterion, context);
         return encoder.encode();
     }
 
     @Override
     public Criterion decode(ObjectNode json, CodecContext context) {
-        DecodeCriterionCodec decoder = new DecodeCriterionCodec(json);
+        DecodeCriterionCodecHelper decoder = new DecodeCriterionCodecHelper(json);
         return decoder.decode();
     }
 
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DecodeConstraintCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/DecodeConstraintCodecHelper.java
similarity index 98%
rename from core/common/src/main/java/org/onosproject/codec/impl/DecodeConstraintCodec.java
rename to core/common/src/main/java/org/onosproject/codec/impl/DecodeConstraintCodecHelper.java
index 3d63090..5746003 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/DecodeConstraintCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/DecodeConstraintCodecHelper.java
@@ -43,7 +43,7 @@
 /**
  * Constraint JSON decoder.
  */
-public final class DecodeConstraintCodec {
+public final class DecodeConstraintCodecHelper {
     private final ObjectNode json;
 
     /**
@@ -51,7 +51,7 @@
      *
      * @param json object node to decode
      */
-    public DecodeConstraintCodec(ObjectNode json) {
+    public DecodeConstraintCodecHelper(ObjectNode json) {
         this.json = json;
     }
 
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodecHelper.java
similarity index 99%
rename from core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodec.java
rename to core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodecHelper.java
index 27a0b40..1a86284 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/DecodeCriterionCodecHelper.java
@@ -38,7 +38,7 @@
 /**
  * Decode portion of the criterion codec.
  */
-public final class DecodeCriterionCodec {
+public final class DecodeCriterionCodecHelper {
 
     private final ObjectNode json;
 
@@ -56,7 +56,7 @@
      *
      * @param json JSON object to decode
      */
-    public DecodeCriterionCodec(ObjectNode json) {
+    public DecodeCriterionCodecHelper(ObjectNode json) {
         this.json = json;
         decoderMap = new HashMap<>();
 
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
similarity index 98%
rename from core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodec.java
rename to core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
index 48dfbdc..21968c2 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
@@ -37,7 +37,7 @@
 /**
  * Decoding portion of the instruction codec.
  */
-public final class DecodeInstructionCodec {
+public final class DecodeInstructionCodecHelper {
     private final ObjectNode json;
 
     /**
@@ -45,7 +45,7 @@
      *
      * @param json JSON object to decode
      */
-    public DecodeInstructionCodec(ObjectNode json) {
+    public DecodeInstructionCodecHelper(ObjectNode json) {
         this.json = json;
     }
 
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeConstraintCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeConstraintCodecHelper.java
similarity index 97%
rename from core/common/src/main/java/org/onosproject/codec/impl/EncodeConstraintCodec.java
rename to core/common/src/main/java/org/onosproject/codec/impl/EncodeConstraintCodecHelper.java
index 7e18cac..61f4dbf 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeConstraintCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeConstraintCodecHelper.java
@@ -35,7 +35,7 @@
 /**
  * Implementation of encoder for constraint JSON codec.
  */
-public final class EncodeConstraintCodec {
+public final class EncodeConstraintCodecHelper {
 
     private final Constraint constraint;
     private final CodecContext context;
@@ -46,7 +46,7 @@
      * @param constraint constraint to encode
      * @param context to use for look ups
      */
-    public EncodeConstraintCodec(Constraint constraint, CodecContext context) {
+    public EncodeConstraintCodecHelper(Constraint constraint, CodecContext context) {
         this.constraint = constraint;
         this.context = context;
     }
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
similarity index 98%
rename from core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodec.java
rename to core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
index 04cdb4f..0783c5e 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
@@ -52,7 +52,7 @@
 /**
  * Encode portion of the criterion codec.
  */
-public final class EncodeCriterionCodec {
+public final class EncodeCriterionCodecHelper {
 
     private final Criterion criterion;
     private final CodecContext context;
@@ -66,7 +66,7 @@
      * @param criterion Criterion to encode
      * @param context context of the JSON encoding
      */
-    public EncodeCriterionCodec(Criterion criterion, CodecContext context) {
+    public EncodeCriterionCodecHelper(Criterion criterion, CodecContext context) {
         this.criterion = criterion;
         this.context = context;
 
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
similarity index 97%
rename from core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodec.java
rename to core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
index 20de446..850334d 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
@@ -30,8 +30,8 @@
 /**
  * JSON encoding of Instructions.
  */
-public final class EncodeInstructionCodec {
-    protected static final Logger log = LoggerFactory.getLogger(EncodeInstructionCodec.class);
+public final class EncodeInstructionCodecHelper {
+    protected static final Logger log = LoggerFactory.getLogger(EncodeInstructionCodecHelper.class);
     private final Instruction instruction;
     private final CodecContext context;
 
@@ -41,7 +41,7 @@
      * @param instruction instruction to encode
      * @param context codec context for the encoding
      */
-    public EncodeInstructionCodec(Instruction instruction, CodecContext context) {
+    public EncodeInstructionCodecHelper(Instruction instruction, CodecContext context) {
         this.instruction = instruction;
         this.context = context;
     }
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java
index e903dfa..6f680c8 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/InstructionCodec.java
@@ -56,7 +56,7 @@
     public ObjectNode encode(Instruction instruction, CodecContext context) {
         checkNotNull(instruction, "Instruction cannot be null");
 
-        return new EncodeInstructionCodec(instruction, context).encode();
+        return new EncodeInstructionCodecHelper(instruction, context).encode();
     }
 
     @Override
@@ -65,6 +65,6 @@
             return null;
         }
 
-        return new DecodeInstructionCodec(json).decode();
+        return new DecodeInstructionCodecHelper(json).decode();
     }
 }
diff --git a/core/common/src/test/java/org/onosproject/codec/impl/CriterionCodecTest.java b/core/common/src/test/java/org/onosproject/codec/impl/CriterionCodecTest.java
index abd77ad..a61689e 100644
--- a/core/common/src/test/java/org/onosproject/codec/impl/CriterionCodecTest.java
+++ b/core/common/src/test/java/org/onosproject/codec/impl/CriterionCodecTest.java
@@ -72,7 +72,7 @@
      */
     @Test
     public void checkCriterionTypes() throws Exception {
-        EncodeCriterionCodec encoder = new EncodeCriterionCodec(
+        EncodeCriterionCodecHelper encoder = new EncodeCriterionCodecHelper(
                 Criteria.dummy(), context);
         EnumMap<Criterion.Type, Object> formatMap =
                 getField(encoder, "formatMap");
diff --git a/core/common/src/test/java/org/onosproject/codec/impl/ImmutableCodecsTest.java b/core/common/src/test/java/org/onosproject/codec/impl/ImmutableCodecsTest.java
index 744248a..2081fa5 100644
--- a/core/common/src/test/java/org/onosproject/codec/impl/ImmutableCodecsTest.java
+++ b/core/common/src/test/java/org/onosproject/codec/impl/ImmutableCodecsTest.java
@@ -37,9 +37,11 @@
         assertThatClassIsImmutable(ConnectivityIntentCodec.class);
         assertThatClassIsImmutable(ConnectPointCodec.class);
         assertThatClassIsImmutable(ConstraintCodec.class);
+        assertThatClassIsImmutable(EncodeConstraintCodecHelper.class);
+        assertThatClassIsImmutable(DecodeConstraintCodecHelper.class);
         assertThatClassIsImmutable(CriterionCodec.class);
-        assertThatClassIsImmutable(EncodeCriterionCodec.class);
-        assertThatClassIsImmutable(DecodeCriterionCodec.class);
+        assertThatClassIsImmutable(EncodeCriterionCodecHelper.class);
+        assertThatClassIsImmutable(DecodeCriterionCodecHelper.class);
         assertThatClassIsImmutable(DeviceCodec.class);
         assertThatClassIsImmutable(EthernetCodec.class);
         assertThatClassIsImmutable(FlowEntryCodec.class);
@@ -47,8 +49,8 @@
         assertThatClassIsImmutable(HostLocationCodec.class);
         assertThatClassIsImmutable(HostToHostIntentCodec.class);
         assertThatClassIsImmutable(InstructionCodec.class);
-        assertThatClassIsImmutable(EncodeInstructionCodec.class);
-        assertThatClassIsImmutable(DecodeInstructionCodec.class);
+        assertThatClassIsImmutable(EncodeInstructionCodecHelper.class);
+        assertThatClassIsImmutable(DecodeInstructionCodecHelper.class);
         assertThatClassIsImmutable(IntentCodec.class);
         assertThatClassIsImmutable(LinkCodec.class);
         assertThatClassIsImmutable(PathCodec.class);
