diff --git a/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java b/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java
index fc51216..b542a44 100644
--- a/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java
+++ b/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java
@@ -21,7 +21,9 @@
 
 /**
  * Interface for encode and decode extension selector.
+ * @deprecated 1.11.0 Loon use interface under core/api/net/flow.
  */
+@Deprecated
 public interface ExtensionSelectorCodec extends HandlerBehaviour {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java b/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java
index e33258b..f024de5 100644
--- a/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java
+++ b/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java
@@ -21,7 +21,9 @@
 
 /**
  * Interface for encode and decode extension treatment.
+ * @deprecated 1.11.0 Loon use interface under core/api/net/flow.
  */
+@Deprecated
 public interface ExtensionTreatmentCodec extends HandlerBehaviour {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/flow/ExtensionSelectorCodec.java b/core/api/src/main/java/org/onosproject/net/flow/ExtensionSelectorCodec.java
new file mode 100644
index 0000000..231e17d
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/flow/ExtensionSelectorCodec.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.net.flow;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.onosproject.codec.CodecContext;
+import org.onosproject.net.driver.HandlerBehaviour;
+import org.onosproject.net.flow.criteria.ExtensionSelector;
+
+/**
+ * Interface for encode and decode extension selector.
+ */
+public interface ExtensionSelectorCodec extends HandlerBehaviour {
+
+    /**
+     * Encodes an extension selector to an JSON object.
+     *
+     * @param extensionSelector extension selector
+     * @param  context encoding context
+     * @return JSON object
+     */
+    default ObjectNode encode(ExtensionSelector extensionSelector, CodecContext context) {
+        return null;
+    }
+
+    /**
+     * Decodes an JSON object to an extension selector.
+     *
+     * @param objectNode JSON object
+     * @param  context decoding context
+     * @return extension selector
+     */
+    default ExtensionSelector decode(ObjectNode objectNode, CodecContext context) {
+        return null;
+    }
+}
diff --git a/core/api/src/main/java/org/onosproject/net/flow/ExtensionTreatmentCodec.java b/core/api/src/main/java/org/onosproject/net/flow/ExtensionTreatmentCodec.java
new file mode 100644
index 0000000..d984fb4
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/flow/ExtensionTreatmentCodec.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.net.flow;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.onosproject.codec.CodecContext;
+import org.onosproject.net.driver.HandlerBehaviour;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
+
+/**
+ * Interface for encode and decode extension treatment.
+ */
+public interface ExtensionTreatmentCodec extends HandlerBehaviour {
+
+    /**
+     * Encodes an extension treatment to an JSON object.
+     *
+     * @param extensionTreatment extension treatment
+     * @param  context encoding context
+     * @return JSON object
+     */
+    default ObjectNode encode(ExtensionTreatment extensionTreatment, CodecContext context) {
+        return null;
+    }
+
+    /**
+     * Decodes an JSON object to an extension treatment.
+     *
+     * @param objectNode JSON object
+     * @param  context decoding context
+     * @return extension treatment
+     */
+    default ExtensionTreatment decode(ObjectNode objectNode, CodecContext context) {
+        return null;
+    }
+}
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
index 94fc97c..9851d4c 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java
@@ -27,7 +27,7 @@
 import org.onlab.packet.VlanId;
 import org.onlab.util.HexString;
 import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.ExtensionTreatmentCodec;
+import org.onosproject.net.flow.ExtensionTreatmentCodec;
 import org.onosproject.core.GroupId;
 import org.onosproject.net.ChannelSpacing;
 import org.onosproject.net.Device;
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
index 2727223..8f5fc74 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java
@@ -20,7 +20,7 @@
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.util.HexString;
 import org.onosproject.codec.CodecContext;
-import org.onosproject.codec.ExtensionTreatmentCodec;
+import org.onosproject.net.flow.ExtensionTreatmentCodec;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.OchSignal;
